SMTPClient电子邮件有时会转到垃圾邮件

时间:2016-01-14 19:53:25

标签: asp.net vb.net email outlook smtpclient

我很难理解为什么我使用SMTP从我的网站发送的电子邮件会转到Outlook的垃圾邮件。这是我的代码:

       Dim windowsLoginName As System.String = HttpContext.Current.User.Identity.Name

    Dim split As String() = Nothing
    Dim vname As String

    'Get network login name (name only)
    split = windowsLoginName.Split("\".ToCharArray)
    vname = split(1)

'create the mail message
    Dim mail As New MailMessage()

    'set the addresses
    mail.From = New MailAddress(vname & "@x.com")
    mail.To.Add(txtWhoApproves.Text)

    'set the content
    Dim varstreason, vartxt, vartxt2, varbody As String
    varstreason = DropDownList1.SelectedItem.Text

    If TextBox1.Text = TextBox2.Text Then

        If CheckBox1.Checked = True Then
            varbody = TextBox3.Text & " has requested the following time off:  " & System.Environment.NewLine & varstreason & " - " & TextBox1.Text & " - All Day"
        Else
            vartxt = varstreason & " - " & TextBox1.Text
            vartxt2 = DropDownList2.SelectedValue & " to " & DropDownList3.SelectedValue
            varbody = TextBox3.Text & " has requested the following time off:  " & vartxt & " - " & vartxt2
        End If

    Else
        varbody = TextBox3.Text & " has requested the following time off:  " & varstreason & " - " & TextBox1.Text & " to " & TextBox2.Text
    End If

    mail.Subject = "Time Off Approval Requested"
    mail.Body = varbody

    'send the message
    Dim smtp As New SmtpClient("(IP Address of email server)")

    'to authenticate we set the username and password properites on the SmtpClient
    'smtp.Credentials = New NetworkCredential("username", "secret")
    smtp.Send(mail)

我的电子邮件来自登录网络的任何人。由于它是多人,我注释了smtp.Credentials,因为每个用户的密码不同(并定期更改)。我认为这会以某种方式导致电子邮件有时会进入垃圾邮件。

想法?如何防止这些电子邮件进入垃圾邮件?我们正在使用Exchange 2010服务器以及Outlook 2007,2010或2013.提前感谢!

3 个答案:

答案 0 :(得分:2)

可能是您的网站在Outlook安全系统中列为垃圾邮件,或者您的电子邮件中包含一些垃圾邮件或链接,导致电子邮件进入垃圾邮件或垃圾邮箱。

答案 1 :(得分:1)

电子邮件的垃圾邮件过滤基于主题,邮件和附件的内容。它还会根据您发送的主机/ IP等内容进行过滤。如果您尝试使用Gmail等主机通过SMTP发送电子邮件,您可能会注意到它将收件箱。

答案 2 :(得分:1)

根据您的意见:

  1. 电子邮件来自您网站的SMTP,使用您的域名。
  2. 您的Exchange服务器也收到了该电子邮件,该服务器也使用相同的域。
  3. 电子邮件仅供内部受众使用。
  4. 从这里我会推荐两种不同的解决方案:

    第一个解决方案:

    而不是使用您网站的SMTP,而是使用您的Exchange服务器发送电子邮件。这将与joe@yourcompany.com一样发送电子邮件至bob@yourcompany.com。电子邮件将永远不需要离开服务器或点击任何过滤器(除非您设置内部过滤器),因此它不会打到垃圾邮件框(除非最终用户专门设置它)。请查看此站点以获取有关如何完成此操作的一些帮助:https://www.emailarchitect.net/easendmail/kb/vbnet.aspx

    第二个解决方案:

    使用组策略将电子邮件地址添加到所有用户的安全发件人列表中。(https://social.technet.microsoft.com/Forums/office/en-US/c0714d7d-2a42-4b0f-9f1d-63234c7278a0/appending-outlook-safe-senders-list-via-gpo)这似乎应该是一个简单的解决方案,但问题是它仍然可能无法工作,因为你有2个不同的服务器使用相同的域。因此,虽然可以添加地址,但Outlook可能会将其视为不同的地址,因为它不是来自Exchange服务器。此解决方案中的另一个选项是让每个收到您电子邮件的人直接从他们收到的电子邮件中将其添加到安全发件人。这样做,但非常低效和手动。

    有关电子邮件背后的流程和技术的更深入信息,我建议您查看Click-Z的“电子邮件如何工作”系列文章(第1部分 - https://www.clickz.com/clickz/column/2411041/how-email-works-part-one-the-story-of-send