2017-09-26 112 views
1

我已创建函数发送电子邮件。该功能在本地主机上工作成功,但在服务器上失败,没有任何异常。我知道问题来自我的端口IP地址无法发送电子邮件正文包含IP地址和端口号

样品身体string body = "<p>Please click <a href=\"http://123.10.10.10:9200/User/Test?userId=24c04b9e-5a32-4b7c-a61e-ea3303dac679\">here</a></p>Thank You."

问题是:之间IP地址端口

成功发送电子邮件,如果我删除:

你们有什么想法吗?

public void Sent(string sender, string receiver, string subject, string body) 
    { 
     using (MailMessage mail = new MailMessage(sender, receiver)) 
     { 
      using (SmtpClient client = new SmtpClient()) 
      { 
       client.Port = 25; 
       client.DeliveryMethod = SmtpDeliveryMethod.Network; 
       client.UseDefaultCredentials = false; 
       client.Host = "mail.companyName.com.my"; 
       mail.Subject = subject; 
       mail.IsBodyHtml = true; 
       mail.Body = body; 
       client.Send(mail); 
      } 
     } 
    } 
+0

你的意思是成功交付的邮件取决于正文内容?是唯一的线索,你的邮件没有交付给收件人,或者你有权访问smtp服务器,并可以查看其日志?指定一个返回地址,并查看该smtp服务器是否反弹交付失败。并尝试一个不同的smtp服务器。 – dlatikay

+0

就是这样。除了顶部的样品以外,其他身体是成功的。我需要使用我的公司smtp。 –

+1

我想到的唯一的事情就是在交付路线上的某处放置一个过滤器,它根据内容规则丢弃邮件。那么问题很可能不在你的代码中。确实有可能在html体内传递包含非标准端口URL的邮件,我们一直都在做。 – dlatikay

回答

1

你这样做是正确的代码来发送邮件就可以了(你可能需要修改函数名,使SMTP主机名配置的,但这里不是重点)。

继电器的电子邮件传递失败,对客户没有任何直接的反馈意见(无一例外)关于这种失败。

最好的办法是在Set-HostedContentFilterPolicy中设置IncreaseScoreWithRedirectToOtherPort属性,以防您的邮件提供商为Office365,或者在遇到邮件投递链时遇到的其他邮件提供商中的类似垃圾邮件过滤器机制。

您可以设置reply-to地址,并希望目标服务器能够反弹出现故障并提供更多信息。或者让邮件服务器的管理员查看日志。更多的信息在这里:
https://serverfault.com/questions/659861/office-365-exchange-online-any-way-to-block-false-url-spam

0

尝试设置“mail.Body”接收,而不是一个编码字符串一个原始的HTML信息,如:

mail.Body = new System.Web.Mvc.HtmlHelper(new System.Web.Mvc.ViewContext(), new System.Web.Mvc.ViewPage()).Raw(body).ToString(); 

或者把using System.Web.Mvc在起步阶段,所以它变得更短,更容易理解:

using System.Web.Mvc 

mail.Body = new HtmlHelper(new ViewContext(), new ViewPage()).Raw(body).ToString(); 
+0

该选项也不起作用。 –

相关问题