Приложение Email Sender с изображениями на локальном компьютере - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть небольшое почтовое приложение, которое позволяет пользователю создать сообщение из флажков, а затем отправить сообщение в виде электронного письма.Я пытаюсь добавить изображение в электронное письмо, то есть логотип или подпись.Приложение работало нормально, но когда я отправлял изображения в электронное письмо, я обнаружил, что должен использовать System.Net.Mail вместо Interop.Поэтому я изменил свой класс электронной почты на код ниже.Теперь я не получаю электронные письма.Я предполагаю, что это потому, что код настроен для сервера, и я просто хочу запустить это на моей локальной машине.Это просто то, с чем я играю, чтобы помочь мне понять некоторые концепции, поэтому использование в реальном мире не будет фактором.Я просто хочу иметь возможность проверить мою маленькую программу на моей учетной записи электронной почты Outlook локально.Мой код выглядит следующим образом ...

using System;
using System.Net.Mail;
using System.Net.Mime;

namespace Email_Notifier  
{
    public class EmailSender:Notification
    {
        string emailRecipient = System.Configuration.ConfigurationManager.AppSettings    ["emailRecipient"];

        public void SendMail(string message)
        {
            try
            {
                string strMailContent = message;
                string fromAddress = "MyApp@gmail.com";
                string toAddress = emailRecipient;
                string contentId = "image1";
                string path = (@"C:Libraries/Pictures/Logo.gif");  

                MailMessage mailMessage = new MailMessage(fromAddress, toAddress);
                mailMessage.Subject = "Email Notification";

                LinkedResource logo = new LinkedResource( path , MediaTypeNames.Image.Gif);
                logo.ContentId = "Logo";
                // HTML formatting for logo
                AlternateView av1 = AlternateView.CreateAlternateViewFromString("<html><body><img src=cid:Logo/><br></body></html>" + strMailContent, null, MediaTypeNames.Text.Html);
                av1.LinkedResources.Add(logo);

                mailMessage.AlternateViews.Add(av1);
                mailMessage.IsBodyHtml = true;
                SmtpClient mailSender = new SmtpClient("localhost"); 
                mailSender.Send(mailMessage);
            }

            catch (Exception e)
            {
                Console.WriteLine("Problem with email execution. Exception caught: ", e);
            }
            return;
        }
    }
}

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Если ваша проблема в том, что у вас нет SMTP-сервера, с которым вы разговариваете, на вашей машине, вы увидите исключение, а не просто молчание, не доставляющее вашу электронную почту (что, я полагаю, это то, что вы видите, учитывая, что вы не перечислил исключения, но не совсем уверен). может случиться так, что вы успешно доставляете на локальный SMTP-сервер, но не можете отправить почту дальше. если у вас установлен сервер iis smtp, и именно это вы пытаетесь использовать для отправки почты, вы можете увидеть сообщения об ошибках в подкаталогах C: \ Inetpub \ mailroot. есть подкаталог недопустимой почты, который должен был потерпеть неудачу при доставке.

если у вас windows 7, он не поддерживает SMTP-сервер iis. альтернативой для наличия на вашей машине сервера smtp, который на самом деле не доставляет электронную почту, но показывает вам все, что было получено для любого адреса электронной почты, является http://smtp4dev.codeplex.com/., даже если у меня есть сервер iis smtp, доступный в моем операционная система, я предпочитаю это для нужд разработки.

1 голос
/ 13 декабря 2011

Вы указываете mailSender = new SmtpClient("localhost");.

Вы установили SMTP-сервер на локальном компьютере? Если нет, вам нужно будет сделать это, чтобы использовать SmtpClient. В противном случае укажите имя хоста, отличное от localhost, возможно, используя свою учетную запись Gmail, как указано здесь , учитывая, что вам потребуется настроить его для аутентификации и SSL.

См. Также документацию для SmtpClient .

Есть также одна или две другие проблемы, которые я вижу в вашем коде, но давайте разберемся с ними после того, как заработала простая отправка почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...