在 SMTP 电子邮件 VB.NET 的正文中添加多行

Posted

技术标签:

【中文标题】在 SMTP 电子邮件 VB.NET 的正文中添加多行【英文标题】:Adding multiple lines to body of SMTP email VB.NET 【发布时间】:2012-05-04 05:35:48 【问题描述】:

我可以使用此代码在我的 Exchange 服务器上发送电子邮件

Try
        Dim SmtpServer As New SmtpClient
        Dim mail As New MailMessage
        SmtpServer.Credentials = New Net.NetworkCredential()
        SmtpServer.Port = 25
        SmtpServer.Host = "email.host.com"
        mail = New MailMessage
        mail.From = New MailAddress("myemail@email.com")
        mail.To.Add("otheremail@email.com")
        mail.Subject = "Equipment Request"
        mail.Body = "This is for testing SMTP mail from me" 


        SmtpServer.Send(mail)

    catch ex As Exception
        MsgBox(ex.ToString)
    End Try

但是如何在正文中添加多行?

【问题讨论】:

准备多行字符串消息并将其全部添加到 body 属性有什么问题? 【参考方案1】:

将其视为普通文本对象,您可以在句子之间使用Environment.NewLinevbNewLine

StringBuilder 在这里很有用:

Dim sb As New StringBuilder
sb.AppendLine("Line One")
sb.AppendLine("Line Two")

mail.Body = sb.ToString()

【讨论】:

【参考方案2】:

像这样?

Dim myMessage as String = "This is for testing SMTP mail from me" + Environment.NewLine
myMessage = myMessage + "Line1" + Environment.NewLine

然后

mail.Body = myMessage

【讨论】:

【参考方案3】:

我会为您的正文创建一个变量,然后将其添加到 mail.Body,使其看起来像这样。

Try
    Dim strBody as string = ""
    Dim SmtpServer As New SmtpClient
    Dim mail As New MailMessage
    SmtpServer.Credentials = New Net.NetworkCredential()
    SmtpServer.Port = 25
    SmtpServer.Host = "email.host.com"
    mail = New MailMessage
    mail.From = New MailAddress("myemail@email.com")
    mail.To.Add("otheremail@email.com")
    mail.Subject = "Equipment Request"
    strBody = "This is for testing SMTP mail from me" & vbCrLf
    strBody += "line 2" & vbCrLf
    mail.Body = strBody

    SmtpServer.Send(mail)

catch ex As Exception
    MsgBox(ex.ToString)
End Try

这将附加换行符,您应该在电子邮件中拥有自己的每一行。

【讨论】:

【参考方案4】:

尝试字符串中的system.environment.newline ...应该可以工作

【讨论】:

【参考方案5】:

如果您的邮件正文需要采用 html 格式,请在您的字符串中添加<br> 标签。如果正文是 HTML 格式,vbCrLfStringBuilder 将不起作用。

Dim mail As New MailMessage
mail.IsBodyHtml = True
mail.Body = "First Line<br>"
mail.Body += "Second Line<br>"
mail.Body += "Third Line"

如果不是 HTML 格式,这里的其他答案似乎都不错。

【讨论】:

【参考方案6】:

对我有用的是在字符串中使用 ..

strBody = "This is for testing SMTP mail from me<BR> line 2" 

【讨论】:

以上是关于在 SMTP 电子邮件 VB.NET 的正文中添加多行的主要内容,如果未能解决你的问题,请参考以下文章

VB.net sendmail smtp 错误

如何在 vb.net 中发送 gmail 电子邮件?

SMTP仅发送正文不起作用Python [重复]

自动化发送邮件之SMTP

VB .Net 使用 Gmail 帐户发送电子邮件

在 Golang 中附加文件并通过 SMTP 发送时没有正文部分的电子邮件