2013-03-03 6 views
1

Я бродил по форумам и не нашел ответа на свой вопрос. все решение (и вопрос) об использовании Microsoft.Office.Interop.Outlook; по какой-то причине Мне не разрешено использоватьoffice.interop.Создайте и отправьте письмо по электронной почте

Я даже пробовал:

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 –

+0

@AlinaB. не разрешено использовать какой-либо 'office.interop' –

+0

Это winforms, web, WPF или что? Очевидно, что это не VSTO, но вы отметили его Outlook, поэтому какой тип приложения вам нужен для отправки писем? –

ответ

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; 

Send Асинхронно и использовать обратный вызов для определения результата

//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

Чтобы добавить, вам может потребоваться включить SSL, используя свойство EnableSsl в SmtpClient. [Класс SmtpClient] (http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx) –

0

Вы подтвердили учетные данные, включая формат имени пользователя, путем настройки учетной записи на альтернативном клиенте, например Outlook?

Вам может понадобиться:

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

или

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

Является ли ваш почтовый сервер Exchange Server? Если это так, вы можете использовать веб-службы Exchange (EWS) для отправки писем и сохранения копий в папке «Отправленные». Простой пример можно увидеть здесь:

Send Exchange Email

More Sample Code

Смежные вопросы