これは、コンパイラNew line in constant
に2行目が必要であることを通知せずに行を分割しているためです。
これを修正する方法は3つあります。
- 行を壊さないでください
- すべての特殊文字をエスケープする
- サインを使っ
@
てやりたいことをする
例として:
StringBuilder sb = new StringBuilder();
sb.Append("<html><table cellpadding='0' cellspacing='0' width='100%' align='center'>");
sb.Append("<tr><td><p>Dear " + user.UserName+ "</p><br>");
sb.Append("To verify your account, please click the following link:<span style='font-weight:bold;'>");
sb.Append("<a href='" + verifyUrl + "' target='http://localhost:51819'>" + verifyUrl + "</a></span> to complete your registration.<br>");
MailBody.Append(sb.ToString());
また、文字列内で一重引用符と二重引用符を混在させないようにする必要があります。アイデアは、文字列内で一重引用符のみを使用し、二重引用符を使用して文字列を区切ることです。
@
文字列の前でinを使用して、次のように行を分割することもできます。
MailBody.Append(
String.Format(
@"<html>
<table cellpadding='0' cellspacing='0' width='100%' align='center'>
<tr>
<td>
<p>Dear {0}</p>
To verify your account, please click the following link:
<span style='font-weight:bold;'>
<a href='{1}'>{1}</a>
</span> to complete your registration.
</td>
</tr>
</table>
</html>", user.UserName, verifyUrl));
またStringBuilder
、テンプレート内に変数を含めることを避けていました。これにより、表示と編集がより簡単になります。
そして最後に、重要なことですが、HTMLについてもう少し知っておく必要があります...そのようなことはありませんtarget="http://localhost:51819"
...