2013-03-03 190 views
1

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

我甚至尝试:

MailAddress fromAddress = new MailAddress("[email protected]"); 
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
message.From = fromAddress; 
message.To.Add("[email protected]"); 
message.CC.Add("[email protected]"); 
message.Subject = "theSubject"; 
message.Body = "TheBody"; 

SmtpClient smtpClient = new SmtpClient("zzz.server.xxx"); 
smtpClient.Credentials = new NetworkCredential("[email protected]", "password"); 

smtpClient.Send(message); 

代码无法验证证书,即使我硬编码密码,但我觉得必须有一个更好的办法。

+1

我发现这最终有帮助http://stackoverflow.com/questions/6489397/send-mail-using-my-outlook-account – 2013-03-03 04:37:11

+0

@AlinaB。不允许使用任何'office.interop' – 2013-03-03 04:38:38

+0

这是winforms,web,WPF还是什么?显然它不是VSTO,但你已经标记了Outlook,那么你需要什么类型的应用程序来发送电子邮件? – 2013-03-03 05:04:42

回答

2

有很多你想问的问题。你可以发布服务器的响应或你收到的错误吗?

这里有一些意见和反馈,可以帮助您 指定端口

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."); 
      } 
     } 
+0

只需添加,您可能需要使用SmtpClient上的EnableSsl属性启用SSL。 [SmtpClient类](http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx) – 2013-03-03 05:21:37

0

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

您可能需要:

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

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

是您的电子邮件服务器的Exchange Server?如果是这样,则可以使用Exchange Web服务(EWS)发送电子邮件并将副本保存到“已发送邮件”文件夹中。一个简单的例子可以看这里:

Send Exchange Email

More Sample Code

相关问题