11

ウェブサイトのアカウント登録のために、gmail アカウントから C# 経由でメールを送信しようとしています。

いくつかの方法を試しましたが、同じ例外が引き続き表示されます: System.Net.Mail.Smtp Exception - Connection has timed out.

これは、Web.config ファイルに含まれているものです。

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" 
              from="Writely &lt;mrbk.writely@gmail.com&gt;">
            <network host="smtp.gmail.com" 
                     port="465" 
                     enableSsl="true" 
                     defaultCredentials="false" 
                     userName="mrbk.writely@gmail.com" 
                     password="******" />
        </smtp>
    </mailSettings>
</system.net>

writely は私のウェブサイトの名前で、mrbk.writely@gmail.com はメールを送信するアカウントです。

次に、アカウントコントローラーで、データベースに接続してユーザーをテーブルに保存すると、MailMessageオブジェクトを作成し、次の方法でメールを同じにしようとしています:

using (DBConnection conn = new DBConnection())
{
       conn.UserInfoes.Add(userInfo);
       conn.SaveChanges();

       MailMessage mail = new MailMessage();
       mail.From = new MailAddress("mrbk.writely@gmail.com");
       mail.To.Add("bernice.zerafa11@gmail.com");
       mail.Subject = "Welcome to Writely";
       mail.Body = "Test content";

       SmtpClient smtp = new SmtpClient();
       smtp.Send(mail);
}

私は何かを見逃していますか、何か間違っていますか?これは、スタックオーバーフローに関する他の質問でこれを行う良い方法だと読んだので、ここで何が問題なのか本当にわかりません。

ご協力いただきありがとうございます :)

4

5 に答える 5

6

使用する設定をSmtpClientに指示する必要があります。Web.Configファイルからこの情報を自動的に読み取ることはありません。

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);
smtp.Credentials = new NetworkCredential("mrbk.writely@gmail.com", "***");
smtp.EnableSsl = true;
smtp.Send(mail);
于 2013-03-21T18:39:55.330 に答える
4

Gmail には認証が必要です。

Outgoing Mail (SMTP) Server
requires TLS or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465

だから私がしたことは

var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("mrbk.writely@gmail.com", "mypwd"),
            EnableSsl = true
        };
        client.Send("bernice.zerafa11@gmail.com", "bernice.zerafa11@gmail.com", "Welcome to Writely", "Test content");
于 2013-03-21T18:42:25.683 に答える
3

まったく同じ問題があり、ポート番号を 465 から 587 に切り替えた後に解決しました。

「メールの確認」、「パスワードの回復」、「メールの送信」で問題がありましたが、今では 3 つの問題すべてが解決されています :)。

かなり古い投稿であることは承知していますが、通常、新しい質問をする代わりに、既存の投稿を使用して回答を見つけます。

ご協力ありがとうございました。

于 2014-03-28T08:00:50.543 に答える
1

私はすでにここで答えたように。

この問題は、Gmail アカウントのセキュリティ構成が原因である可能性もあります。

正しいポートは 587 ですが、認証するには、Gmail アカウントで安全性の低いアプリからのアクセスを許可する必要があります。ここで試してみてください

それは私のために働いた、それが役立つことを願っています..

于 2016-03-21T18:14:48.400 に答える
0

asp.net web フォーム/sharepoint の例

StringBuilder Body = new StringBuilder();
Body.Append("Your text");

String FromEmail = "you email";
String DisplayNameFromEmailMedico = "display when you receive email";
MailMessage message = new MailMessage();
message.From = new MailAddress(FromEmail, DisplayNameFromEmailMedico);
message.To.Add(new MailAddress("myclient@gmail.com"));
message.Subject = "subject that print in email";
message.IsBodyHtml = true;
message.Body = Body.ToString();
SmtpClient client = new SmtpClient();

NetworkCredential myCreds = new NetworkCredential("yoursmtpemail@gmail.com", "key from email smtp", "");
client.EnableSsl = true;
client.Credentials = myCreds;
client.Send(message);
于 2016-12-15T13:05:45.873 に答える