Вот простой консольный проект, демонстрирующий эти шаги. Для начала скачиваем и устанавливаем данный API SDK (x86, x64). Потом добавляем ссылку к проекту и подключаем. А дальше, с помощью нескольких строк пишем код, отправляющий нам пресловутый "Hello World!".
using System;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using Microsoft.Exchange.WebServices.Data;
namespace ExchangeMail
{
class Program
{
public static void Main(string[] args)
{
String Mail_, Subject_, Body_;
Mail_ = "Lastname.Firstname@yourmailserver.ru";
Subject_ = "Hello World";
Body_ = "Hello World, I'm here";
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationHandler;
service.Url = new Uri("https://YourExchangeServer/EWS/Exchange.asmx");
EmailMessage message = new EmailMessage(service);
message.Subject = Subject_;
message.Body = Body_;
message.ToRecipients.Add(Mail_);
message.SendAndSaveCopy();
}
private static bool RemoteCertificateValidationHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true; //Игнорировать проверку и продолжить
}
}
}
RemoteCertificateValidationHandler необходим для того, чтобы игнорировать проверку сертификата, который программа пытается запросить у Exchange. Данный метод был найден на просторах интернета, в MSDN я об этом ничего не нашёл. Но если Вы хотите, скачайте и установите сертификат вручную.
а зачем так мудрить?
ОтветитьУдалитьну разве что себе копию положить (AndSaveCopy)
а тут и outlook не нужен:
using System.Net.Mail;
using System.Net;
SmtpClient Smtp = new SmtpClient("192.168.1.1", 25);
// Smtp.Credentials = new NetworkCredential("xxx@mail.ru", "password");
// в АД не нужно Credentials
//Smtp.EnableSsl = false; // без сертификатов
MailMessage Message = new MailMessage();
Message.From = new MailAddress("Вася пупкин");// от кого
Message.To.Add(new MailAddress(masha@mail.ru)); // кому
// Message.To.Add(new MailAddress(masha2@mail.ru)); // еще кому-нибудь
Message.IsBodyHtml = true;// будем рисовать HTML
Message.Body =".hr."+ Text+".br..hr.Не отвечайте на это письмо указанный обратный адрес не существует!!";
Smtp.Send(Message); //отправка
Да, спасибо за код, но... Целью было отправить сообщение с нашего почтового сервера (у получателя должен засветиться необходимый адрес отправителя), у отправителя действительно должна остаться копия отправленного сообщения (будет возможность доказать, что он таки отправлял), также у пользователя есть возможность получить с сервера адреса тех, кто прочитал сообщение (в Outlook это называется "Отслеживание", кажется). А так да, если бы мне нужно было просто отправить сообщение, то я так бы и поступил))
УдалитьДа и вроде ничего мудрёного я не сделал. Код довольно простой и понятный. Ну разве что немного больше, чем Ваш))