2

可能重复:
如何降低电子邮件的垃圾邮件分数?

我有这个可以向人们发送大量电子邮件的 c# 代码。但是我发送的电子邮件被归类为垃圾邮件。我该怎么办。我应该对我的代码进行任何更改吗?我尝试从 sql server 数据库获取电子邮件地址。我的代码可以附加一个文件。

Entities context = new Entities();
var query = from c in context.Emails select c.EmailAddress;
MailMessage mail = new MailMessage();
Regex sample = new Regex(@"^[-!#$%&'*+/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&'*+/0-9=?A-Z^_a-z{|}~])*
                                  @[a-zA-Z](-?[a-zA-Z0-9])*(\.[a-zA-Z](-?[a-zA-Z0-9])*)+$");
int total = 0;//number of all emails
int count = 0;//counter for putting interrupt between each 10 sending
int failed = 0;//number of failed sending
int success = 0;//number of successful sending

double totalsize = 0;//size of attachment file

if (FileUpload1.HasFile)
{
    mail.Attachments.Add(new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.FileName));
    foreach (Attachment attachment in mail.Attachments)
    {
        string size =attachment.ContentStream.Length.ToString ();
        totalsize=Convert .ToDouble (size);
    }
 }
foreach (var c in query)
{
    if (count == 10)
    {
        Thread.Sleep(10000);
        count = 0;
    }
    mail.From = new MailAddress("hadi@myhost.com");
    mail.Bcc.Add(new MailAddress(c.ToString()));
    mail.Subject = "hello";
    mail.IsBodyHtml = true;

    mail.Body = FCKeditor1.Value.ToString();

    SmtpClient smtp = new SmtpClient();
    smtp.Host = "localhost";
    smtp.Port = 25; 
    if ((sample.IsMatch(c.ToString())) && (sample .IsMatch (mail .From .ToString ())) && (totalsize<1000000))
    {
      try
        {
            smtp.Send(mail);
            //Response.Write("email has sent to " + c.ToString());
            success++;

        }
        catch 
        {
            //Response.Write("email has not sent to " + c.ToString());
            failed++;
        }
        count++;
    }
    total++;
} 
4

1 回答 1

2

您无需对您的代码做任何事情以使其不是垃圾邮件。您所要做的就是确保您从不应该具有“开放中继”的主机发送电子邮件,这意味着不是每个人都可以从它发送电子邮件。

从正确的服务器发送您的电子邮件并带有正确的电子邮件签名,这样当接收者检查身份验证时,他们应该验证您的电子邮件源服务器和从您的电子邮件主机验证的签名。

于 2012-04-07T06:34:28.013 回答