Mailgun将电子邮件地址替换为抄送(CC)电子邮件地址。

6

我在使用mailgun发送带有cc参数的邮件时遇到了问题。

但是当我执行该方法时,从抄送邮件中得到了错误的头部信息。

这是我的代码

var client = new RestClient
{
    BaseUrl = new Uri("https://api.mailgun.net/v3"),
    Authenticator = new HttpBasicAuthenticator("api", "secret-key")
};

var request = new RestRequest();
request.AddParameter("to", "email.to@gmail.com");
request.AddParameter("cc", "email.cc@gmail.com");
client.Execute(request)

所以,有人能帮我解决这个问题吗?

这是来自邮件的信息

在此输入图片描述

这是我从抄送的邮件中获得的信息

在此输入图片描述


您的问题无法复现。鉴于您已根据Mailgun API文档指定了domainResource参数,此代码应该可以正常工作。 - Salah Akbari
当我使用收件人变量时,我遇到了同样的问题。 request.AddParameter ("recipient-variables", "{\"email.to@gmail.com\": {\"first\":\"Bob\", \"id\":1}, \"email.cc@gmail.com\": {\"first\":\"Alice\", \"id\": 2}}"); - rycornell
我也遇到了同样的问题。请问你能否在这里写下解决方案? - Jaydip Kalkani
3个回答

5

嗯,我无法重现你的问题。我在收件箱和抄送邮箱中都收到了相同的邮件消息,并显示了正确的地址。这是来自抄送邮箱的屏幕截图:

enter image description here

为了解决问题,请您按照以下步骤进行:

  1. 更新您的问题,附上用于调用netgun API的精确代码。细节很重要,我们应该理解您和我的调用之间的差异。

  2. 请您同时更新您的问题,附上发送到抄送邮箱的原始邮件消息。在Gmail中,您可以点击回复按钮旁边的向下箭头并选择“显示原始消息”来完成此操作:

enter image description here

消息中将包含许多不同的标题,包括收件人和抄送:

enter image description here

请与我们分享您收到的整个邮件包。
3. 如果可能,请检查邮件地址不在gmail上的问题。对于我来说,在gmail上工作正常,但在您的情况下可能是消息修改的根本原因。

2
请在您的代码中添加 request.Method = Method.POST;,因为根据官方 C# mailgun API 文档

您可以尝试使用以下代码(按照相同顺序):

    RestClient client = new RestClient ();
    client.BaseUrl = new Uri ("https://api.mailgun.net/v3");
    client.Authenticator =
        new HttpBasicAuthenticator ("api",
                                    "YOUR_API_KEY");
    RestRequest request = new RestRequest ();
    request.AddParameter ("domain", "YOUR_DOMAIN_NAME", ParameterType.UrlSegment);
    request.Resource = "{domain}/messages";
    request.AddParameter ("from", "Email From <email.from@gmail.com>");
    request.AddParameter ("to", "email.to@gmail.com");
    request.AddParameter ("cc", "email.cc@gmail.com");
    request.AddParameter ("subject", "Email Subject");
    request.AddParameter ("text", "Testing some Mailgun awesomness!");
    request.AddParameter ("o:tracking", false);
    request.Method = Method.POST;
    return client.Execute (request);

问候。

是的,我在我的代码中使用了 request.Method = Method.POST;。就像您的示例代码一样,没有这个参数:request.AddParameter("o:tracking", false); - Luc Nguyen
问题似乎与你的端有关,因为这段代码是从官方文档复制的,并且根据 @Kezanub 的说法,这个问题无法再现... - A. STEFANI

0

你好,我似乎无法复制您的问题,但是每当我使用Mailgun时,我都会使用以下代码,它对我来说很有效。如果您想尝试,请使用此代码。

public static IRestResponse SendSimpleMessage(string email)
    {
        var order = new CustomerOrder();
        RestClient client = new RestClient();
        client.BaseUrl = new Uri("https://api.mailgun.net/v3");
        client.Authenticator =
                new HttpBasicAuthenticator("api",
                                           "key-MINE");
        RestRequest request = new RestRequest();
        request.AddParameter("domain",
                             "DOMAINHERE.mailgun.org", ParameterType.UrlSegment);
        request.Resource = "{domain}/messages";
        request.AddParameter("from", "Shop Staff <postmaster@EMAILTHING>");
        request.AddParameter("to", email);
    request.AddParameter("cc", "Shop Staff <insert email here>");
        request.AddParameter("subject", "Your Order has been placed");
        request.AddParameter("text", "Thank you for placing an order with our shop, we have just begun processing your order. You will recieve a follow up email when your order is ready for collection");
        request.Method = Method.POST;
        return client.Execute(request);
    }

然后只需调用它即可

ResponseModel.SendSimpleMessage(email);

编辑:我能看到你的代码唯一的问题是缺少

request.Method = Method.POST;

POST方法被定义为以下内容:“POST方法用于向指定的资源提交实体,通常会导致服务器上的状态或副作用发生变化”

希望这可以帮助到您。


我不知道"request.AddParameter("cc", "Shop Staff <insert email here>");"和"request.AddParameter("cc", "<insert email here>");"之间有什么区别,是否是这个原因? - Luc Nguyen
嗨,Luc,“店员”只是在电子邮件前显示的名称,就像这张图片中所示 http://prntscr.com/iiyn26 - Kezabub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接