首页 文章

通过电子邮件Vb.net发送ICS日历文件

提问于
浏览
-1

当我通过电子邮件发送日历文件时,它会在收件人的电子邮件中正确显示 . 当我以编程方式发送相同的文件时,它没有 . 这是我以编程方式做的

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("someuser@gmail.com")
    'Mail.To.Add("somesender@gmail.com")
    Mail.From = New MailAddress("somesender@gmail.com")
    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("somesender@gmail.com", "password")
    SMTP.Port = "587"
    SMTP.Send(Mail)
End Sub

这是测试文件的内容

开始:VCALENDAR版本:2.0开始:VEVENT DTSTART:20160930T110000 DTEND:20160930T120000摘要: Bus 底日派对位置:123 Main Street,Anahiem CA描述:这是一个测试说明结束:VEVENT END:VCALENDAR

有任何想法吗?

谢谢

1 回答

  • 1

    使用System.Net.Mail绝对无法做到这一点,因为生成的MIME消息内容将具有错误的结构 . VCalendar信息需要包含在特定的MIME部分中,但它将被放在一个单独的部分中,并被视为普通附件 .

    我专门编写了自己的SMTP客户端和MIME消息生成器,通过完全按照要求创建MIME内容来克服此问题 . 这样做的问题是我需要满足不同的安全协议,例如NTLM,这对代码来说是一种痛苦 .

    您可能能够找到支持nuget库中所需行为的第三方SMTP客户端 .

相关问题