通过C#SMTP发送的电子邮件不会通过发送的电子邮件客户端看到

时间:2014-11-20 16:09:54

标签: c# email smtpclient

如果我尝试发送简单的“简报”等电子邮件,则不会显示在我的“已发送”文件夹中发送的电子邮件。我已经多次将它发送到我自己的邮件地址(我会说它可能是20封测试邮件)而且没有。

你能告诉我怎么做吗?

这是应用程序的代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // passwordBox.PasswordChar = '*';
    }

    private void sendButton_Click(object sender, EventArgs e)
    {
        string receiver = toBox.Text;
        char[] spl = new char[2] { ';', ',' };
        string[] receivers = receiver.Split(spl);

        //mail details
        MailMessage mail = new MailMessage();
        mail.From = new MailAddress("xxx@xxx");
        mail.Subject = topicBox.Text;
        mail.Body = contentBox.Text;

        //smtp details
        SmtpClient SmtpServer = new SmtpClient();
        SmtpServer.Host = "mail.xxx";
        SmtpServer.Port = 25;
        SmtpServer.Credentials = new NetworkCredential("xxx@xxx", "password");
        SmtpServer.EnableSsl = false;

        for (int i = 0; i < receivers.Length; i++)
        {
            try
            {
                mail.To.Add(receivers[i].ToString());

                SmtpServer.Send(mail);

                MessageBox.Show("Mail for " + mail.To.ToString() + " send!", " Success!", MessageBoxButtons.OK);
                mail.To.RemoveAt(0);
            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString() , "Error");
                return;
            }
        }
    }
}

奇怪的是,由公司“465”提供并将EnableSsl更改为“true”的端口不断崩溃整个应用程序。

两个问题:

  1. 我在SSL上做错了什么?
  2. 如何让此应用在“已发送”文件夹中显示已发送的电子邮件?

1 个答案:

答案 0 :(得分:2)

当您通过代码发送邮件时,您不能通过Microsoft Outlook发送邮件。您将其直接发送到服务器。因此,代表用户发送的电子邮件不会显示在Outlook中的已发送文件夹中。只有收到电子邮件的人(To,CC和BCC)才会看到该电子邮件。

您可以使用某些Exchange(如果您可以控制Web服务器,实际上是它正在使用的软件)或Outlook SDK,而不是使用SMTP库来发送电子邮件。代表用户发送。