C# SmtpClient好像不支持STARTTLS,outlook邮箱不能发了

最近发现我之前的程序不能用了。于是我想代替程序,于是找到MailKit了,我先试一下水。

 

using System;
using System.Text;
using System.Net.Mail;
using System.Net;


namespace sendmail
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                SmtpClient smtp = new SmtpClient("smtp.office365.com",587);                
                smtp.Credentials = new NetworkCredential("yourmail@outlook.com", "yourpassword");
                smtp.UseDefaultCredentials = true;
                smtp.EnableSsl = true;
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                MailMessage content = new MailMessage();
                content.From = new MailAddress("yourmail@outlook.com");
                content.SubjectEncoding = Encoding.UTF8;
                content.BodyEncoding = Encoding.UTF8;
                content.IsBodyHtml = false;
                content.Priority = MailPriority.High;

                if (args.Length == 4 && args[0] == "-t")
                {
                    //
                    content.To.Add(new MailAddress(args[1]));
                    //args[2];
                    content.Subject = args[2];
                    //args[3];
                    content.Body = args[3];
                    smtp.Send(content);
                }
                else
                {
                    Console.OutputEncoding= Encoding.UTF8;
                    Console.WriteLine("args参数输入有误!");
                }
            }
            catch (Exception ex)
            {
                //Console.OutputEncoding = Encoding.UTF8;
                Console.WriteLine();
                Console.WriteLine(ex.Message);
                throw ex;
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
如果您不想使用 Outlook Interop 库来发送周期性的会议邀请,您可以使用 iCalendar 文件格式来创建并发送会议邀请。iCalendar 是一种通用的日历数据交换格式,它可以被各种邮件客户端和日历应用程序所支持。您可以使用 C# 的 iCalendar 库来创建和解析 iCalendar 文件,从而实现周期性的会议邀请。以下是一个示例代码,它演示了如何使用 iCalendar 库来创建一个每周定期的会议邀请,并将其发送到指定的收件人: ``` using Ical.Net; using Ical.Net.CalendarComponents; using Ical.Net.DataTypes; using Ical.Net.Serialization; using System.Net.Mail; // 创建 iCalendar 日历对象 var calendar = new Calendar(); // 创建一个新的事件(即会议邀请) var evt = new Event { Summary = "周期性的会议邀请", Location = "会议室", Description = "这是一个测试周期性的会议邀请", DtStart = new CalDateTime(DateTime.Now.AddHours(1)), DtEnd = new CalDateTime(DateTime.Now.AddHours(2)), }; // 设置事件的重复规则(例如每周一次) var recur = new RecurrencePattern(FrequencyType.Weekly, 1) { DaysOfWeek = new List<DayOfWeek> { DayOfWeek.Monday }, }; // 将重复规则添加到事件中 evt.RecurrenceRules = new List<RecurrencePattern> { recur }; // 将事件添加到日历中 calendar.Events.Add(evt); // 将日历对象序列化为 iCalendar 文件内容 var serializer = new CalendarSerializer(new SerializationContext()); var icalContent = serializer.SerializeToString(calendar); // 创建 MailMessage 对象,并添加 iCalendar 文件内容作为附件 var message = new MailMessage(); message.Attachments.Add(new Attachment(new System.IO.MemoryStream(Encoding.UTF8.GetBytes(icalContent)), "meeting.ics", "text/calendar")); // 设置邮件相关信息,例如收件人,主题等 message.To.Add("example@example.com"); message.Subject = "周期性的会议邀请"; // 创建 SmtpClient 对象并发送邮件 var smtpClient = new SmtpClient("smtp.example.com"); smtpClient.Send(message); ``` 在上面的示例代码中,我们使用了 iCalendar 库来创建一个每周定期的会议邀请,并将其序列化为 iCalendar 文件内容。然后,我们创建了 MailMessage 对象,并将 iCalendar 文件内容作为附件添加到邮件中。最后,我们使用 SmtpClient 类来发送邮件。您可以根据需要更改重复规则的设置来满足您的需求,并使用各种邮件客户端和日历应用程序来接收并处理这些会议邀请。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Risehuxyc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值