C# 调用outlook发送邮件

一、直接调用outlook邮箱发送邮件
1.环境准备:右击项目中的引用,选择【管理NuGet程序包】

2.搜索outlook,点击安装(我已经安装过了所以显示的是更新)
在这里插入图片描述
3.

 /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="sendmail">收件人邮箱</param>
        /// <param name="mailtitle">邮件标题</param>
        /// <param name="mailcontent">邮件内容</param>
        /// <returns></returns>
        public static bool Send(string sendmail, string mailtitle, string mailcontent)
        {
            Regex r = new Regex("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
            if (r.IsMatch(sendmail))
            {
                Application olApp = new Application();
                MailItem mailItem = (MailItem)olApp.CreateItem(OlItemType.olMailItem);
                mailItem.To = sendmail;
                mailItem.Subject = mailtitle;
                mailItem.BodyFormat = OlBodyFormat.olFormatHTML;
                mailItem.HTMLBody = mailcontent;
                (mailItem).Send();
                mailItem = null;
                olApp = null;
                return true;
            }
            return false;
        }

这种方法相当于直接调用用户电脑上的outlook邮箱进行邮件发送,只要提前在发布的服务器上安装好outlook邮箱,并且登录成功,那么就可以使用上面的方法进行邮件发送,且无需再次进行邮箱的身份验证;

二、通过outlook的smtp服务器发送邮件

SmtpClient smtpmail = new SmtpClient("smtp-server");
smtpmail.Port = 993;
smtpmail.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpmail.EnableSsl = false;
smtpmail.Credentials = new NetworkCredential("username", "password"); //发送人邮箱的账号密码
MailMessage mailob = new MailMessage();

mailob.From = new MailAddress("发件人邮箱", "", Encoding.UTF8);
string to = "收件人邮箱@example.com;收件人邮箱@example.com;" //可创建多个收件人,收件人邮箱之间使用';'分号分隔
string[] tosomebody = to.Split(';');
for (int i = 0; i < tosomebody.Length; i++)
{
    mailob.To.Add(tosomebody[i].ToString());
}
string cc = "抄送邮箱@example.com;抄送邮箱@example.com;"
if (cc != "")
{
    string[] ccsomebody = cc.Split(';');
    for (int i = 0; i < ccsomebody.Length; i++)
    {
        mailob.CC.Add(ccsomebody[i].ToString());
    }
}
mailob.Subject = "主题";
mailob.Body = "邮件内容";
mailob.BodyEncoding = Encoding.UTF8;
mailob.IsBodyHtml = true;
smtpmail.Send(mailob);
常用smtp服务器地址及端口号如下:
outlook.com:SMTP服务器地址:smtp.office365.com(端口:587)

163.com:SMTP服务器地址:smtp.163.com(端口:25)

qq.com:SMTP服务器地址:smtp.qq.com (SSL启用 端口:465)

sina.com:SMTP服务器地址:smtp.sina.com.cn(端口:25)

Foxmail:SMTP服务器地址:SMTP.foxmail.com(端口:25)

sinaVIP:SMTP服务器:smtp.vip.sina.com (端口:25)

sohu.com:SMTP服务器地址:smtp.sohu.com(端口:25)

使用smtp服务器发送邮件,则无需在目标服务器上安装outlook邮箱,只需在smtp服务器上通过身份验证后,就可发送邮件;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用 C#Outlook 中收取指定邮件附件的示例代码: ```csharp using System; using System.IO; using Microsoft.Office.Interop.Outlook; namespace OutlookAttachmentDemo { class Program { static void Main(string[] args) { Application outlookApp = new Application(); NameSpace outlookNS = outlookApp.GetNamespace("MAPI"); // 登录邮箱账号 outlookNS.Logon("YourEmailAddress", null, false, false); MAPIFolder inboxFolder = outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox); // 搜索指定的邮件 string subject = "Test email"; Items items = inboxFolder.Items.Restrict("[Subject] = '" + subject + "'"); if (items.Count == 0) { Console.WriteLine("No email found with subject: " + subject); return; } // 获取第一封符合条件的邮件 MailItem mailItem = (MailItem)items[1]; // 保存邮件附件 foreach (Attachment attachment in mailItem.Attachments) { if (attachment.FileName.EndsWith(".txt")) { string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), attachment.FileName); attachment.SaveAsFile(filePath); Console.WriteLine("Attachment saved to: " + filePath); } } // 退出邮箱账号 outlookNS.Logoff(); } } } ``` 在上面的代码中,我们首先使用 `Application` 和 `NameSpace` 类创建了一个 Outlook 应用程序实例,并登录了指定的邮箱账号。然后我们搜索指定主题的邮件,并获取第一封符合条件的邮件。最后,我们遍历邮件附件,如果附件的文件名以 `.txt` 结尾,则将其保存到桌面上。 请注意,为了运行此示例代码,您需要将 Outlook 安装在您的计算机上,并添加对 `Microsoft.Office.Interop.Outlook` 程序集的引用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值