2011-07-19 14 views
1

多くの解決策には、サーバー(smtp.gmail.comおよびSystem.Net.Mail.SmtpClient)を使用する必要があります。Gmailを使用しないメールを送信する

その他の(多くが廃止されましたと言った)System.Web.Mailを使用することをお勧め:いずれの場合では here for example.

私はそれをしようとしたとき、私はできませんでした上記の例のいずれかが動作するようにします。私はそれがファイアウォールの問題だとは思わない。私はOutlook Expressを使用してGmailを介して電子メールを送信できます。私が与えたC#のエラーは、ターゲットマシンが接続を積極的に拒否していることです。

コードからOutlookを使用するとよいですか?それを行う最善の方法は、AutoItやdll/comを経由することですか?なぜ私は最初にサーバーが必要なのですか? C#ではWebからのものをダウンロードできますが、何らかのサーバーを使用することなく、C#から特別な形式のWebパッケージ(電子メール)を直接送信できないのはなぜですか?

+1

が実際にuはあなたが何を意味するか説明できる 'SMTP'サーバーまたはすでに – Sudantha

+0

を確立し、サービスをホストする必要がそれによって?それはなぜ必要なのですか? – user420667

+1

厳密に必要かどうかは言語/ライブラリによって異なりますが、どこからでも発信される電子メールは、通常、一部のフィルタや大量の電子メールホストによってブロックされます。 – ssube

答えて

0

SMTPリレーまたはゲートウェイが必要です。私はhttp://sendgrid.com/を使ってクラウドから電子メールを送信しますが、無料のオプションがあります。

電子メールの送信方法のサンプルコードもありますので、コードを再入力して他の場所から呼び出すことができます。

public partial class Email 
{ 
/// <summary> 
/// Generic Email method used to send email through SendGrid 
/// </summary> 
/// <param name="ToAddressName">ToAddress, DisplayName</param> 
/// <param name="FromAddress">Email address of sender</param> 
/// <param name="FromName">Display Name of sender</param> 
/// <param name="SendCopy">Send BCC to FromAddress</param> 
public void SendEmail(Dictionary<string, string> toAddressName, 
         String fromAddress, String fromName, 
         String subject, String message, 
         bool sendCopy) 
{ 
    try 
    { 
    MailMessage mailMsg = new MailMessage(); 

    // To 
    foreach (KeyValuePair<string, string> kvp in toAddressName) 
    { 
     string toAddress = kvp.Key; 
     string displayName = kvp.Value; 
     mailMsg.To.Add(new MailAddress(toAddress, displayName)); 
    } 

    // From 
    mailMsg.From = new MailAddress(fromAddress, fromName); 

    if (sendCopy) 
    { 
     mailMsg.Bcc.Add(new MailAddress(fromAddress, fromName)); 
    } 

    // Subject and multipart/alternative Body 
    mailMsg.Subject = subject; 

    string html = message; 
    mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html)); 

    // Init SmtpClient and send 
    SmtpClient smtpClient = new SmtpClient("smtp.sendgrid.net", Convert.ToInt32(587)); 

    System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("sendgridusername", "sendgridpassword"); 
    smtpClient.Credentials = credentials; 

    smtpClient.Send(mailMsg); 
    } 
    catch (Exception ex) 
    { 
    Error error = new Error(); 
    error.ReportError(ex); 
    } 
} 

(psの私はそれを聞くのが大好きだ私のコード上の任意のコメント、感謝している場合)

+0

あなたのコードにコメントしたいなら、stackexchangeでcodereviewをお勧めします。あなたのコードは動作するように見えます。申し訳ありませんが、これは以前と同じ問題が発生します。私はそれがコンピュータの問題だと思うし、コードの問題ではないと思うが、私はその理由を正確には知らない。だから、おそらくwiresharkを試したり、おそらくはOSを新しくインストールしてしまうだろう。 – user420667

関連する問題