通过电子邮件发送ICS日历文件Vb.net
问题描述:
当我通过电子邮件发送日历文件时,它正确显示在收件人的电子邮件中。当我以编程方式发送相同的文件时,它不会。这里是我做的编程通过电子邮件发送ICS日历文件Vb.net
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Mail As New MailMessage
Mail.Subject = "test email"
Mail.To.Add("[email protected]")
'Mail.To.Add("[email protected]")
Mail.From = New MailAddress("[email protected]")
Mail.Body = "This is a sample email using VB.NET"
Dim attachment As System.Net.Mail.Attachment
attachment = New System.Net.Mail.Attachment("C:\Users\x\Downloads\testCalendar.ics")
Mail.Attachments.Add(attachment)
Dim SMTP As New SmtpClient("smtp.gmail.com")
SMTP.EnableSsl = True
'SMTP.DeliveryMethod = SMTP.DeliveryMethod.SpecifiedPickupDirectory
SMTP.Credentials = New System.Net.NetworkCredential("[email protected]", "password")
SMTP.Port = "587"
SMTP.Send(Mail)
End Sub
这里是测试ics文件
BEGIN的内容:VCALENDAR 版本:2.0 BEGIN:VEVENT DTSTART:20160930T110000 DTEND:20160930T120000 摘要:法国国庆日党 位置:123大街,Anahiem CA 说明:这是测试描述 END:VEVENT END:VCALENDAR
任何想法?
感谢
答
是绝对没有办法做到这一点使用System.Net.Mail作为所产生的MIME消息内容将有错误的结构。 VCalendar信息需要包含在特定的MIME部分中,但它将被放置在单独的一个中并作为正常附件处理。
我编写了自己的SMTP客户端和MIME消息生成器,专门用于通过根据需要创建MIME内容来解决此问题。这样做的问题是我需要迎合不同的安全协议,例如NTLM,这是一种编码的痛苦。
您可能能够在nuget库中找到支持您需要的行为的第三方SMTP客户端。