2016-09-22 13 views
0

私はこの時点でちょっと固まっています。私はasp.netアイデンティティの登録にカスタムhtml電子メールテンプレートを追加したいと思います。つまり、ユーザーが登録するリンクを取得したときに、ある種のフォーマット/テンプレートが必要です。asp.netアイデンティティにカスタムhtmlテンプレートを追加するには?

if (result.Succeeded) { 
    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); 
    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { 
     userId = user.Id, code = code 
    }, protocol: Request.Url.Scheme); 
    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); 
    ViewBag.Link = callbackUrl; 
    return View("DisplayEmail"); 
} 

上記のコードでは、リンクがユーザーに送信されます。私はヘッダー、フッターとボディにリンクが必要な形式でそれを送信したい。だから私の理解は私がテンプレートを入れる必要があるということです。それはどうやってできますか?

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

答えて

0

私はあなたの確認/招待方法で使用すると、パーソナライズされた電子メールの確認/招待状を送信するには、このようなものを使用できることを前提としています

public ActionResult Your_Method() 
    { 
     //... your auth login .... 

     //Load email setting from config 
     var EmailFrom = ConfigurationManager.AppSettings["EmailFrom"]; 
     var EmailTo = ConfigurationManager.AppSettings["EmailTo"]; 
     var EmailSubject = ConfigurationManager.AppSettings["EmailSubject"]; 

     var currentUser = //your current user data for example from session or from the code/database; 
     try 
     { 
       if (currentUser != null) 
       { 
        using (var smtp = new SmtpClient()) 
        { 
         using (var message = new MailMessage()) 
         { 
          var from = new MailAddress(EmailFrom); 
          var to = new MailAddress(EmailTo); 

          message.To.Add(to); 
          message.From = from; 
          message.Subject = EmailSubject; 
          message.IsBodyHtml = true; 
          message.Body = [email protected]" 
    Dear user: {currentUser.FName ?? string.Empty} {currentUser.LName ?? string.Empty} <br/> 
    Welcome to our website! Your id: {currentUser.Id ?? string.Empty} <br/> 
    Other information: {currentUser.information ?? string.Empty} <br/> 
    <br/> 
    <br/> 
    Contact Us Email : {"[email protected]"}<br/> 
    Contact Us Phone : {"+7 913 123 4567"} <br/> 
    "; 
          smtp.Send(message); 
         } 
        } 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      //Log your exception somethere 
      //e.HandleException(LogLevel.Fatal); 
     } 

     //And then you can return some JSON 
     var response = JsonConvert.SerializeObject(your_return_object); 
     return new ContentResult {Content = response, ContentEncoding = Encoding.UTF8, ContentType = "application/json"}; 

     //Or show a View or redirect 
     return View(); 

     //Or show nothing 
     return return new EmptyResult(); 

     //It depends on your logic 
    } 

あなたはまた、

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appSettings> 
     <!-- Email configuration --> 
     <add key="EmailFrom" value="[email protected]" /> 
     <add key="EmailTo" value="[email protected]" /> 
     <add key="EmailSubject" value="subject of your email" /> 
    </appSettings> 
    <system.net> 
     <!-- SMTP configuration --> 
     <mailSettings> 
     <smtp> 
      <network host="MAIL_SERVER" port="25" userName="USER_NAME" password="USER_PASSWORD" /> 
     </smtp> 
     </mailSettings> 
    </system.net> 
    ... 
</configuration> 

UPDATEを含める必要があります: 質問が更新されましたので、少し詳しい情報があります: MSDNによるUserManager.SendEmailAsync Method

メソッドの構文は、それがあなたのためにも、よりシンプルである

public virtual Task SendEmailAsync(
    TKey userId, 
    string subject, 
    string body 
) 

です。あなたはそのようなことをやって、メールの「ボディ」をカスタマイズすることができます。

var header = "Dear user: <br/>"; 
var footer = "Thank you <br/> website.com"; 
var originalBody = "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>" 

var newEmailBody = header+"<br/>"+originalBody+"<br/>"+footer; 
await UserManager.SendEmailAsync(user.Id, "Confirm your account", newEmailBody); 

私は文字列の補間のためのC#6.0を使用することをお勧めしますあなたはそれについての詳細を読むことができ、ここでHow C# 6.0 Simplifies, Clarifies and Condenses Your Code

ことに注意してください電子メールの本文はhtmlなので、あなたはそれをきれいにして、必要に応じてフォーマットすることができます。

私はそれが役に立ちそうです。

+0

お返事ありがとうございます。私は私の質問を編集しました、あなたはそれで私を助けてくれますか? – newbie

+0

@newbie私はより多くの情報を追加しました。 –

関連する問題