创建和发送outlook电子邮件

本文关键字:outlook 电子邮件 创建 | 更新日期: 2023-09-27 18:01:50

我一直在漫游论坛,没有找到任何回答我的问题。所有的解决方案(和问题)都是关于使用Microsoft.Office.Interop.Outlook;由于某些原因我不允许使用任何 office.interop

我甚至试过了:

MailAddress fromAddress = new MailAddress("sender@server.com");
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.From = fromAddress;
message.To.Add("receiver@theirServer.com");
message.CC.Add("receiver2@theirServer.com");
message.Subject = "theSubject";
message.Body = "TheBody";
SmtpClient smtpClient = new SmtpClient("zzz.server.xxx");
smtpClient.Credentials = new NetworkCredential("sender@server.com", "password");
smtpClient.Send(message);

代码无法验证凭证,即使在我硬编码密码之后,但我觉得一定有更好的方法。

创建和发送outlook电子邮件

你的问题有很多值得期待的地方。您可以发布服务器的响应或您正在接收的错误吗?

这里有一些观察和反馈可能会对你有所帮助指定端口

SmtpClient smtpClient = new SmtpClient("zzz.server.xxx", PORTNUMBER);

设置一些基本属性

smtpClient.Timeout = 10000;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false; //must be set prior to credentials
smtpClient.Credentials = new NetworkCredential("username", "pass");

设置消息编码

message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;

异步发送并使用回调来确定结果

//add callback 
smtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
//set token
string userToken = "tokenString";
//send asynchronously
smtpCient.SendAsync(message, userToken);
public static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            // Get the unique identifier for this asynchronous operation.
             String token = (string) e.UserState;
            if (e.Cancelled)
            {
                 //do something if it was cancelled
            }
            if (e.Error != null)
            {
               MessageBox.Show( e.Error.ToString());
            } else
            {
                MessageBox.Show("Message sent.");
            }
        }

您是否通过在替代客户端(如Outlook)中配置帐户验证了凭据,包括用户名的格式?

你可能需要:

smtpClient.Credentials = new NetworkCredential("sender", "password");

smtpClient.Credentials = new NetworkCredential("DOMAIN'sender", "password");

您的电子邮件服务器是Exchange server吗?如果是,则可以使用Exchange Web服务(EWS)发送电子邮件并将副本保存在"已发送邮件"文件夹中。下面是一个简单的例子:

发送Exchange Email

更多示例代码