我创建了一个社区门户,用户可以在其中创建自己的帐户.成功注册后,将在注册的电子邮件地址发送确认邮件.
我使用以下代码发送邮件 -
private void SendMail(string recvr, string recvrName, string verCode, int NewUserID)
{
try
{
string emailID = ConfigurationManager.AppSettings["WebMasterMail"];
string mailPass = ConfigurationManager.AppSettings["pass"];
string mailer = ConfigurationManager.AppSettings["mailer"];
MailMessage msg = new MailMessage();
MailAddress addrFrom = new MailAddress(emailID, "Panbeli.in.... Bari community portal");
MailAddress addrTo = new MailAddress(recvr, recvrName);
msg.To.Add(addrTo);
msg.From = addrFrom;
msg.Subject = "You have registered sucessfully on PanBeli.in.";
msg.Priority = MailPriority.High;
msg.Body = RegisterMessageBody(recvrName, verCode,NewUserID);
msg.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient(mailer);
smtp.Credentials = new System.Net.NetworkCredential(emailID, mailPass);
smtp.Send(msg);
}
catch (Exception Ex) { }
}
Run Code Online (Sandbox Code Playgroud)
测试时我们发现所有确认邮件都是垃圾邮件文件夹而不是收件箱.
代码有什么问题,还是有任何与安全相关的问题.
任何人都可以建议解决这个问题.
谢谢你分享你的时间.
Gre*_*ler 29
听起来您的电子邮件被SpamAssassin等标记,因此您只需要专注于更改您的电子邮件,以免被标记.
你的内容听起来没有任何理由为贝叶斯分数评分,所以我不认为这是问题所在.尝试删除可能的触发词并不会有什么坏处.
您的邮件标记为高优先级.你需要这个吗?这只是垃圾邮件过滤器中的一个评分指标.垃圾邮件通常标记为高优先级,因此您的邮件将受到更严格的审查.另一方面,对于某些过滤器标记您的消息具有高优先级将意味着更少的审查.
IsBodyHTML标记为真,但你只是提供text/html.您最低限度需要包含备用视图text/plain.
message.IsBodyHtml = true;
string html = RegisterMessageBodyHtml(recvrName, verCode,NewUserID);
string plain = RegisterMessageBodyPlaintext(recvrName, verCode, NewUserID);
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plain, new ContentType("text/plain"));
Run Code Online (Sandbox Code Playgroud)了解Google如何处理您的消息.在Gmail中,打开您发送的测试邮件,单击"回复"按钮旁边的向下箭头,然后选择"显示原始文件".您会看到Google如何处理您的邮件.寻找像这样的标题:
Received-SPF: softfail (google.com: domain of transitioning xxx@xxx.org does not designate xx.xx.xx.xx as permitted sender) client-ip=xx.xx.xx.xx;
Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning xxx@xxx.org does not designate xx.xx.xx.xx as permitted sender)
Run Code Online (Sandbox Code Playgroud)阅读SpamAssassin的默认规则集,因为它可能是大多数过滤器规则集的一个很好的参考.如果您可以确定邮件被标记的原因,则可以修复它.
电子邮件被标记为垃圾邮件
遗憾的是,这不是编程问题,但我可以理解为什么你会认为它是.该码是发送电子邮件,和你报告说,他们已被送往.所以这不太可能是你的代码的问题,因为它完全符合它的目的!
绕过它
这一切都归结为收件人邮件客户端(他们用来查看电子邮件的软件),或者在某种网关处理电子邮件的服务,或者这两者的组合!
所有这些元素都有各种各样的算法和指标,用于确定电子邮件是否可能是垃圾邮件.因此,一个人适合所有解决方案是不可能的.有些是聪明的,有些则不那么有些,有些人粗暴地丢弃了大量的电子邮件,其他人纯粹是在"不在白名单上","你没有进入"政策,然后有些人只是让一切都进来而不管内容/产地.
解决这个问题的方法有:
小智 5
您的发件人地址无效。尝试输入一个指向有效邮箱的真实电子邮件地址。最好,此电子邮件地址与用于发送邮件的SMTP服务器位于同一域中。如果没有,请阅读SPF http://en.wikipedia.org/wiki/Sender_Policy_Framework
这发生在我身上,现在已经解决了,我只需在 MailMessage 对象上设置 BodyEncoding 和 subjectEncoding 属性,并将 DOCTYPE 和 html 标签添加到我的电子邮件标题中,
var msg = new MailMessage
{
Subject = subject,
Body = body,
BodyEncoding = System.Text.Encoding.UTF8,
SubjectEncoding = System.Text.Encoding.Default,
IsBodyHtml = true
};
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Run Code Online (Sandbox Code Playgroud)
现在运行完美
| 归档时间: |
|
| 查看次数: |
33762 次 |
| 最近记录: |