2017-06-01 9 views
0

私は、毎月25日にユーザーがドメインサブスクリプションを支払うよう通知するボタンコントロールを1つだけ持つシンプルなC#WinFormsアプリケーションを作成しました。私は時間があるときにそれが後の段階で自動的に実行できるように、それをWindowsサービスにします。電子メールに改行を追加する

私はこの記事の@Tartoriから私の実装を得ました:Sending emails from a windows forms application私はそれが欲しい方法で動作します。

すべて問題はありませんが、今問題は、Outlookで同じアカウント設定を使用しているメールアドレスにテストメールを送信すると問題が発生することです。これはhonkey doryですが、ウェブ上でGmailを使用して、私はこれを克服する方法を教えてください

enter image description here enter image description here

:2つのスクリーンショット以下のとおり、それは改行を追加していません。私のコードは以下の通りです:

 private void btnSendMail_Click(object sender, EventArgs e) 
     { 
      MailAddress from = new MailAddress("[email protected]", "Name Surname"); 

      List<MailAddress> cc = new List<MailAddress>(); 
      cc.Add(new MailAddress("[email protected]", "Name2 Surname2")); 
      string subjectText = "Friendly Domain Payment Reminder: " + DateTime.Now.ToShortDateString(); 
      SendEmail(subjectText, from, cc); 
     } 



     protected void SendEmail(string _subject, MailAddress _from, List<MailAddress> _cc, List<MailAddress> _bcc = null) 
     { 
      string Text = ""; 
      SmtpClient mailClient = new SmtpClient("mail.backlinkdesigns.co.za"); 
      MailMessage msgMail; 
      Text = "Good day" + "</br>" + "</br>" + "I hope this message finds you well."     msgMail = new MailMessage(); 
      msgMail.From = _from; 
      MailAddress outlook= new MailAddress("[email protected]", "User Surbname"); 
      MailAddress gmailAccount = new MailAddress("[email protected]", "Name Surname"); 
      msgMail.To.Add(outlook); 
      msgMail.To.Add(gmailAccount); 

      foreach (MailAddress addr in _cc) 
      { 
       msgMail.CC.Add(addr); 
      } 
      if (_bcc != null) 
      { 
       foreach (MailAddress addr in _bcc) 
       { 
        msgMail.Bcc.Add(addr); 
       } 
      } 
      msgMail.Subject = _subject; 
      msgMail.Body = Text; 
      msgMail.IsBodyHtml = true; 
      mailClient.Send(msgMail); 
      msgMail.Dispose(); 

      List<MailAddress> countVar = new List<MailAddress>(); 
      countVar.Add(outlook); 
      countVar.Add(gmailAccount); 
      var temp = countVar.Count; 
      MessageBox.Show("Your email has been successfully sent to " + temp + " users show below: " + "\n\n" + outlook+ "\n" + gmailAccount + "\n" + "\n\n" + "From: " + _from, "Message Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1); 
     } 

UPDATE:私はコード内の改行を取得していたことを証明するために</br>を使用する場合、以下の添付 はHTMLビジュアライザです。 Outlookアプリでは正常に表示されますが、ウェブ上では表示されません。 Environment.NewLineがトリックをしないと見ているソリューションを投稿する前に、コードサンプルをコピーしてコピーしてみてください。あなただけの代わりに< brEnvironment.NewLineプロパティ>を使用することができます@Harold_Finch

enter image description here

答えて

1

これは私のGmailとOutlookで機能しました。

public void SendMail() 
    {    

     SmtpClient smtpClient = new SmtpClient(<CLIENT>); 
     MailMessage message = new MailMessage(<FROM>, <TO>); 

     message.Subject = "Test"; 
     message.IsBodyHtml = true; 

     string html = "<p>hey</p><p></p><p>hey 2</p><p>hey 3</p>"; 
     AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html")); 

     message.AlternateViews.Add(htmlView); 

     smtpClient.Send(message); 
    } 

のGmail:

Displayed in Gmail

展望:

Displayed in Outlook 2016

[UPDATE]

0あなたのspesificコードの場合

はこれを試してみてください。

protected void SendEmail(string _subject, MailAddress _from, List<MailAddress> _cc, List<MailAddress> _bcc = null) 
    { 

     SmtpClient mailClient = new SmtpClient("mail.backlinkdesigns.co.za"); 
     MailMessage msgMail = new MailMessage(); 
     mailClient.UseDefaultCredentials = false; 
     mailClient.Credentials = new NetworkCredential("[email protected]", "password"); 
     var Text = "Good day" + "<br><br/>" + "I hope this message finds you well.";     

     msgMail.From = _from; 
     var mailCollection = new MailAddressCollection() 
     { 
      new MailAddress("[email protected]", "User Surbname"), 
      new MailAddress("[email protected]", "Name Surname") 
     }; 

     foreach (var mailAddress in mailCollection) 
     { 
      msgMail.To.Add(mailAddress); 
     } 

     foreach (MailAddress addr in _cc) 
     { 
      msgMail.CC.Add(addr); 
     } 
     if (_bcc != null) 
     { 
      foreach (MailAddress addr in _bcc) 
      { 
       msgMail.Bcc.Add(addr); 
      } 
     } 
     msgMail.Subject = _subject; 
     msgMail.IsBodyHtml = true; 

     AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Text, new ContentType("text/html")); 
     msgMail.AlternateViews.Add(htmlView); 

     mailClient.Send(msgMail); 
     msgMail.Dispose(); 


     MessageBox.Show("Your email has been successfully sent to " + mailCollection.Count + " users show below: " + "\n\n" + mailCollection[0].User + "\n" + mailCollection[1].User + "\n" + "\n\n" + "From: " + _from, "Message Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1); 
    } 
+0

私のコードスニペットで見られるように、すでにtrueに設定されています。 –

+0

これを試すことができます string html = "メッセージ"; 代替ビューhtmlView = AlternateView.CreateAlternateViewFromString(html、new ContentType( "text/html")); msgMail.AlternateViews.Add(htmlView); – Sondre

+0

あなたのコメントの書式を設定したり、解決策を更新したりすることができます。コメントのどの部分を考慮する必要があるか分かりません。 –

0

。これは、現在の環境用に定義された改行文字列を挿入します。

+0

これは、新しい行を追加しません。ちょうどスペースを追加します。 @EdwinChua –

0

あなたがのStringBuilderクラスを使用することができます。

StringBuilder sb = new StringBuilder();

sb.AppendLine( "あなたのtex"); OR sb.AppendFormat( "あなたのテキスト\ nを")

それは動作します:)

関連する問題