通过电子邮件发送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客户端。