0

我目前正在为我的用户创建一个联系我们页面。在这里,用户可以从任何电子邮件向我发送电子邮件。

using System.Net;
using System.Net.Mail;
OpenFileDialog dlg = new OpenFileDialog();
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        string filename = dlg.FileName;

        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

            mail.From = new MailAddress(TextBox1.Text);
            mail.To.Add("u@urdomain.com");
            mail.Subject = filename;
            mail.Body = "Report";
            Attachment attachment = new Attachment(filename);
            mail.Attachments.Add(attachment);

            SmtpServer.Port = 25;
            SmtpServer.Credentials = new System.Net.NetworkCredential("me", "password");
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);
        }

此电子邮件只能从 gmail 帐户接收。如何接收来自 yahoo、hotmail 等的电子邮件?对于这一部分SmtpServer.Credentials = new System.Net.NetworkCredential("me", "password");,我应该写什么?如何获取用户的密码和邮箱?谢谢

4

2 回答 2

0

smtp.gmail.com不是公共 SMTP 服务器。它保留给 gmail 用户发送和接收邮件。

大多数 SMTP 服务器被限制为仅从其域中的用户发送邮件,并且仅接收为其域中的用户的邮件。简而言之,您不能使用 smtp.gmail.com 将邮件从 joe@aol.com 发送到 pete@msn.com。

您可以通过以下两种方式之一解决您的问题:

  1. 您的用户可以单击mailto您页面上的链接。这将导致用户通过他们的 ISP 从他们的默认邮件客户端向您发送邮件。这种方法的缺点是您必须跳过几圈才能防止垃圾邮件。
  2. 您可以在您的服务器上安装一个 SMTP 服务器并更改您的应用程序以使用该服务器。由于该服务器将接受来自/发往其所在域以外的电子邮件地址的电子邮件,因此您必须确保在开放的 Internet 上无法访问此 SMTP 服务器。否则,垃圾邮件发送者会将您的服务器用作开放中继。
于 2012-09-16T18:33:58.983 回答
0

您不能从用户的电子邮件地址发送。

相反,您需要从您拥有的一个地址(并使用其用户名、密码和 STMP 服务器)发送到您拥有的另一个地址。

于 2012-09-16T18:19:03.260 回答