所以我编写了一个简单的C#WinForms应用程序,它只有一个按钮控件,我会在每个月的第25天点击,以通知我的用户支付他们的域名订阅。我将它变成一个Windows服务,以便在我有空的时候可以在以后的阶段自动运行。
我从@Tartori获得了这个SO帖子的实现:Sending emails from a windows forms application它按照我想要的方式工作。
一切都很好但现在的问题是,当我将测试邮件发送到一个电子邮件地址时,我在Outlook上设置了相同的帐户,这是一个很好的例子,但现在当我通过网络使用Gmail查看相同的测试邮件时不会按照以下两个屏幕截图附加换行符:
请告诉我如何克服这个问题。我的代码如下:
private void btnSendMail_Click(object sender, EventArgs e)
{
MailAddress from = new MailAddress("user@domain.co.za", "Name Surname");
List<MailAddress> cc = new List<MailAddress>();
cc.Add(new MailAddress("user2@domain.co.za", "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("user@domain.co.za", "User Surbname");
MailAddress gmailAccount = new MailAddress("user@gmail.com", "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);
}
更新
当我使用</br>
来证明我在代码中获得换行符时,下面附带的是HTML Visualizer。它们在Outlook应用程序中显示得很好但在网络上却没有。请在发布解决方案之前尝试复制粘贴代码示例,然后查看环境.NewLine不会这样做。
答案 0 :(得分:1)
这适用于我的Gmail和Outlook。
style
<强>的Gmail:强>
<强>展望:强>
<强> [UPDATE] 强>
对于你的特定代码,试试这个:
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);
}
答案 1 :(得分:0)
@Harold_Finch您可以使用Environment.NewLine属性而不是&lt; br
&gt;。这将插入为当前环境定义的换行字符串。
答案 2 :(得分:0)
您可以使用StringBuilder
课程。
StringBuilder sb = new StringBuilder();
sb.AppendLine("Your tex");
OR
sb.AppendFormat("your text \n");
它会起作用:))