0

現在、ユーザーへの CONTACT US ページを作成しています。ここで、ユーザーはどのメールからでもメールを送信できます。

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 にメールを送信することはできません。

次の 2 つの方法のいずれかで問題を解決できます。

  1. ユーザーはmailtoページ上のリンクをクリックできます。これにより、ユーザーは既定のメール クライアントから ISP 経由でメールを送信することになります。このアプローチの欠点は、スパムを防ぐためにいくつかの手順を踏まなければならないことです。
  2. サーバーに SMTP サーバーをインストールし、そのサーバーを使用するようにアプリケーションを変更できます。そのサーバーは、それ自身以外のドメイン内の電子メール アドレスとの間で電子メールを受け入れるため、この SMTP サーバーがオープン インターネット上でアクセスできないようにする必要があります。そうしないと、スパマーがサーバーをオープン リレーとして使用します。
于 2012-09-16T18:33:58.983 に答える
0

ユーザーのメールアドレスから送信することはできません。

代わりに、所有しているアドレスから (そしてそのユーザー名とパスワードと STMP サーバーを使用して) 所有している別のアドレスに送信する必要があります。

于 2012-09-16T18:19:03.260 に答える