我正在使用C#生成和发送电子邮件.
邮件消息是html格式化的,并且在调用Send方法之前一切正常,即在href URL中的aspx之前只有一个点,但是当我在Outlook或任何其他电子邮件客户端中打开发送的电子邮件时,它显示href的双点,如下面的代码所示.
<a href='http://localhost/xyz/invitation..aspx?invitecode=92EFB482-1792-4BC6-9507-70D2E3F06FE0'>Click Here </a>
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么会发生这种情况,有没有办法解决这个问题,比如MailMessage.BodyEncoding的一些特殊编码?我使用MailMessage.BodyEncoding的默认编码(ASCII).
我需要在要求时提交电子邮件.
我的代码有效:
潜在解决方案
优点和缺点
题
有没有人知道如何向"MySpecifiedFileName.eml"提交电子邮件,而无需重命名然后复制?
现有守则:
Public Shared Sub Send(ByVal EmailFrom As String, ByVal EmailTo As String, ByVal Subject As String, ByVal HTMLBody As String, Optional SaveToFile As Boolean = False, Optional SaveFilepath As String = "")
Dim MyMsg As MailMessage = New MailMessage
Dim Recipients() As String
Recipients = Split(EmailTo, ";")
With MyMsg
.From = New System.Net.Mail.MailAddress(EmailFrom)
For i = 0 To Recipients.Count - 1
If Recipients(i).ToString <> "" Then …Run Code Online (Sandbox Code Playgroud) 我正在使用 System.Net.Mail.SmtpClient。
我建立我的MailMessage。IsBodyHtml设置为真。Body 是一些带有一些链接的 html。
有时,会发生一些奇怪的行为 - 将在其中一个链接中添加一个额外的句点。例如,链接将在 MailMessage 正文中设置为:
<a href="http://www.myapp.com/company/contact">Contact Us</a>
Run Code Online (Sandbox Code Playgroud)
但收到的电子邮件显示有一个额外的时期:
<a href="http://www.myapp..com/company/contact">Contact Us</a>
Run Code Online (Sandbox Code Playgroud)
真正奇怪的行为是有时将额外的时间段添加到不同的链接,有时根本不会添加!
这是 System.Net.Mail.SmtpClient 的错误吗?因为 MailMessage 中的正文在发送时没有额外的时间段:
_smtp.Send(message); //message.Body has no extra period during sending
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectorywhich 将电子邮件写入文件。
更新:
我不认为这实际上修复了它,但是通过设置message.BodyEncoding = System.Text.Encoding.UTF8;,我似乎无法重现该错误。任何想法为什么可能已经修复了它?
我想知道是否可以解析点网中的.eml和.msg文件(最好是从内存流中解析),以便我可以在ASP.Net页面上使用它们.