2017-04-07 28 views
0

私は、単純な電子メールを送信するための次のメソッドを持っている:私は/変更を削除する必要がありますHTML電子メールを送信 - 電子メールに.htmlファイルを添付する方法?

private void WelcomeMail(string recipient) 
{ 
    MailMessage mailMessage = new MailMessage("MyEmail", recipient); 
    StringBuilder sbEmailBody = new StringBuilder(); 

    sbEmailBody.Append("How can I attach .html file here instead of writing the whole code"); 

    mailMessage.IsBodyHtml = true; 
    mailMessage.Body = sbEmailBody.ToString(); 
    mailMessage.Subject = "Welcome to domain.com"; 
    SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587); 
    smtpClient.Credentials = new System.Net.NetworkCredential() 
    { 
     UserName = "MyEmail", 
     Password = "MyPassword" 
    }; 
    smtpClient.EnableSsl = true; 
    smtpClient.Send(mailMessage); 
} 

何/ HTML形式の電子メールを送信するために追加しますか?

HTMLファイルはresponsivemail.htmlと呼ばれ、HTMLコードが100行以上含まれています(これは問題です)。

+0

追加したいHTMLは何ですか?あなたはすべてのことを正しくやっているだけで、HTMLが不足しています。 HTMLを*添付ファイル*、または*本文*にしますか? – Amy

+0

あなたはすでにそれを持っているように見えますか? 'sbEmailBody'に追加する文字列に実際にHTMLタグを入れるだけです。だから私はあなたが何を求めているのか本当にわからないのですか?とにかく、HTMLメールをやっているなら、[Postal](https://github.com/andrewdavey/postal)を調べてみるべきでしょう。 – mason

+0

私はウェブサイトからHTMLメールを受け取りました(これはhtmlファイルで、などのタグがすべて含まれています)。私はどのようにコピーする代わりにその.htmlファイルを貼り付けることができるのか質問しました。(非常に多くの)コード全体を貼り付けエリアに貼り付けます。 – concretejungle

答えて

0

サイトルートのHTMLファイルがemailtemplate.htmlというファイルにある場合、HTMLをメモリに読み込んで電子メールの本文に割り当てるだけで済みます。

mailMessage.Body = File.ReadAllText(Server.MapPath("~/emailtemplate.html")); 

私はこれをお勧めしませんが、HTMLをコードに直接埋め込むこともできます。 HTMLは複数の行にまたがるため、文字列リテラル(@"this is a string literal")を使用する必要があります。 HTMLには二重引用符が含まれている可能性があります。二重引用符を二重にしてエスケープする必要があります。あなたがHTMLでメールを送信することになるだろうとあなたがそれらに値を挿入する必要がある場合

mailMessage.Body = @" 
    <h1>This is HTML in an email!</h1> 
    <a href=""http://google.com\"">This is a test link.</a> 
"; 

長期、私はあなたがPostalまたは他のライブラリに見てください。郵便でも簡単にembed imagesにすることができます。

関連する問題