2016-07-20 7 views
0

上記のエラーで、改ざんとクラッシュをclient.Send(email);に保ちます。 4倍のすべてをチェックしました。ここでSystem.Net.Mail.SmtpException {"Failure Sending Email。"}

は私のコードです:

private void submit_Click(object sender, RoutedEventArgs e) 
{ 
    string from = "************@gmail.com"; 
    string to = "*******@sru.edu"; 
    string subject = "PSLM Test"; 
    string body = "PSLM Test"; 
    string server = "smtp.gmail.com"; 
    int port = 465; 
    string username = "************"; 
    string password = "*******"; 

    SmtpClient client = new SmtpClient(server, port); 
    client.Credentials = new NetworkCredential(username, password); 

    MailMessage email = new MailMessage(from, to, subject, body); 

    email.Attachments.Add(new Attachment(GlobalVariables.attachedFilePath)); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[0])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[1])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[2])); 

    client.Send(email); 
} 

は私が間違って何をやっている、してください?

+2

根本原因は何ですか?あなたがキャッチした例外の 'InnerException'プロパティをチェックしてください。 – lorond

+0

_Always_ [InnerException'プロパティ](https://msdn.microsoft.com/en-us/library/windows/apps/system.exception.innerexception)を調べてください。 –

+0

私はあなたのコードでエラーを指摘できるだけではないので、メールサーバーの設定と関係があります。あなたは、実際の問題に関してもっと詳細を含むかもしれない 'InnerException'をチェックしましたか? – Jamiec

答えて

3

GmailのSMTPポートは、465ではなく587です。SmtpClient.EnableSslプロパティもtrueに設定する必要があります。

client.EnableSsl = true; 

それはあなたがclient.UseDefaultCredentialsfalse前に、新たなネットワーク資格情報を設定するに設定する必要があるかもしれません可能です。しかし、必ずしもそうではありません - 私が知っていることは、他のオプションが使い果たされたときに、これはうまくいくということです。

client.UseDefaultCredentials = false; 
client.Credentials = new NetworkCredential(username, password); 

gmailを使用しているため、Googleアカウントのセキュリティ設定で安全性の低いアプリケーションを許可する必要があります。 2要素認証を使用している場合は、アプリケーション固有のパスワードも作成し、コード内で使用する必要があります。

+1

それはそれをしました!それは魅力のように働いた!どうもありがとうございます! @ user1666620私の投票は、私が評判が15になるまで公開されませんが、あなたの投票には間違いありません! – Shaheer

-1
SmtpClient client= new SmtpClient(server, port); 

    client.Credentials = new System.Net.NetworkCredential(username, password); 
    client.UseDefaultCredentials = true; 
    client.DeliveryMethod = SmtpDeliveryMethod.Network; 
    client.EnableSsl = true; 

    MailMessage email = new MailMessage(from, to, subject, body); 

    email.Attachments.Add(new Attachment(GlobalVariables.attachedFilePath)); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[0])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[1])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[2])); 

    client.Send(email); 
+1

これは悪い答えです - なぜOPのコードが間違っているのか説明したり、何が改善されたかを指摘したりしません。実際には動作しません。 – user1666620

+0

これは悪い答えですか? – abaravindan

+1

私は上記の私のコメントで説明しました。あなたがしたことは、あなたが行った変更や理由、あるいはあなたのコードがどんなやり方であるかについての何の説明も付いていないコードを投稿することでした。 – user1666620