Как отправить сообщение электронной почты в формате HTML с веб-сайта asp.net - PullRequest
2 голосов
/ 04 ноября 2011

На моем веб-сайте Asp.net я создаю новых пользователей, и мне нужно отправить электронное письмо пользователю с веб-сайта с его данными для входа.Я создал веб-сервисы для отправки электронной почты, и он отлично работает.Я хочу добавить несколько стилей HTML в электронное письмо, которое я отправляю пользователю.

Итак, я создал HTML-формат электронной почты и сохранил его как HTML-страницу в папке (ресурсе) Внутри проекта.Как я могу прочитать страницу HTML из папки ресурсов и прикрепить ее с помощью приведенного ниже кода в аргументе «BODY» и отправить в метод веб-сервисов.А также, как я могу отредактировать html-файл, чтобы я включал в него данные для входа в систему перед отправкой в ​​веб-службу.Спасибо

C # Код за передачу значения в метод веб-сервиса для отправки электронной почты

       string subject = "login details";
       //call the webservice to send email to the newly created user
       ServiceClient service = new ServiceClient();
       service.sendEmail(newuseremail, subject, BODY, message, myemail);

Ответы [ 4 ]

3 голосов
/ 04 ноября 2011

Для того, чтобы прочитать html-страницу - здесь нет ничего особенного, вы должны подойти к ней как к простому текстовому файлу и прочитать, например, с помощью StreamReader.Чтобы иметь возможность внести некоторые изменения в содержимое, рассмотрите возможность использования некоторого шаблона, который может не отображаться на html-странице в другом месте, например: «$$ USER $$», и после прочтения файла замените такие вхождения на имя пользователя иливсе, что вы хотели бы заменить.Чтобы иметь возможность отправлять html-сообщения из службы, необходимо установить для свойства (если не ошибочно IsBodyHtml) значение true для экземпляра MailMessage.

И это все.

1 голос
/ 04 ноября 2011

Вы хотите прочитать файл HTML в виде строки.Я предполагаю, что у вас есть доступ к нему локально.

string strHTML=File.ReadAllText("myfile.html");

Это также дубликат: Отправка электронного письма с файлом HTML в виде тела (C #)

0 голосов
/ 04 ноября 2011
string BODY = String.Empty;
string PageName = "[Path to resource]"; //example C:\DataSource\Website\DomainName\RousourceFolder\page.html

BODY = new StreamReader(PageName).ReadToEnd();
0 голосов
/ 04 ноября 2011

Вот класс, который упаковывает все, что вам нужно:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;

/// <summary>
/// Wrapper class for the System.Net.Mail objects
/// </summary>
public class SmtpMailMessage : IDisposable
{
    #region declarations

    MailMessage Message;
    SmtpClient SmtpMailClient;

    #endregion

    #region constructors

    /// <summary>
    /// Default constructor for the SmtpMailMessage class
    /// </summary>
    public SmtpMailMessage()
    {
        //initialize the mail message
        Message = new MailMessage();
        Message.Priority = MailPriority.Normal;
        Message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;            
        Message.From = new MailAddress("xxx@abc.com");           

        //initialize the smtp client
        SmtpMailClient = new SmtpClient();
        SmtpMailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        SmtpMailClient.Host = "192.168.0.1";
        SmtpMailClient.Port = 25;
    }

    /// <summary>
    /// Parameterized constructor for the SmtpMailMessage class. Allows for override of the default
    /// SMTP host and port number
    /// </summary>
    /// <param name="HostIP">The IP address of the exchange server</param>
    /// <param name="PortNumber">The port number for ingoing and outgoing SMTP messages</param>
    public SmtpMailMessage(string HostIP, int PortNumber) : this()
    {
        //override the smtp host value
        SmtpMailClient.Host = HostIP;

        //override the smtp port value
        SmtpMailClient.Port = PortNumber;
    }

    #endregion

    #region subject / body

    /// <summary>
    /// The body content of the mail message
    /// </summary>
    public string Body
    {
        get
        {
            return Message.Body;
        }
        set
        {
            Message.Body = value;
        }
    }

    /// <summary>
    /// the subject of the mail message
    /// </summary>
    public string Subject
    {
        get
        {
            return Message.Subject;
        }
        set
        {
            Message.Subject = value;
        }
    }

    #endregion

    #region mail type

    /// <summary>
    /// Gets or sets a value that determines whether the mail message
    /// should be formatted as HTML or text
    /// </summary>
    public bool IsHtmlMessage
    {
        get
        {
            return Message.IsBodyHtml;
        }
        set
        {
            Message.IsBodyHtml = value;
        }
    }

    #endregion

    #region sender

    /// <summary>
    /// Gets or sets the from address of this message
    /// </summary>
    public string From
    {
        get
        {
            return Message.From.Address;
        }
        set
        {
            Message.From = new MailAddress(value);
        }
    }

    #endregion

    #region recipients

    /// <summary>
    /// Gets the collection of recipients
    /// </summary>
    public MailAddressCollection To
    {
        get
        {
            return Message.To;

        }
    }

    /// <summary>
    /// Gets the collection of CC recipients 
    /// </summary>
    public MailAddressCollection CC
    {
        get
        {
            return Message.CC;
        }
    }

    /// <summary>
    /// Gets the collection of Bcc recipients
    /// </summary>
    public MailAddressCollection Bcc
    {
        get
        {
            return Message.Bcc;
        }
    }

    #endregion

    #region delivery notification

    /// <summary>
    /// Gets or sets the delivery notification settings for this message
    /// </summary>
    public DeliveryNotificationOptions DeliveryNotifications
    {
        get
        {
            return Message.DeliveryNotificationOptions;
        }
        set
        {
            Message.DeliveryNotificationOptions = value;
        }
    }

    #endregion

    #region priority

    /// <summary>
    /// Gets or sets the Priority of this message
    /// </summary>
    public MailPriority PriorityLevel
    {
        get
        {
            return Message.Priority;
        }
        set
        {
            Message.Priority = value;
        }
    }

    #endregion

    #region send methods

    /// <summary>
    /// Sends the message anonymously (without credentials)
    /// </summary>
    public void Send()
    {
        SmtpMailClient.Send(Message);
    }

    /// <summary>
    /// Sends the message with authorization from a network account   
    /// </summary>
    /// <param name="Username">The Windows username of the authorizing user</param>
    /// <param name="Password">The Windows password of the authorizing user</param>
    /// <param name="Domain">The domain name of the network to which the authorizing user belongs</param>
    public void Send(string Username, string Password, string Domain)
    {
        //attach a network credential to this message using the information passed into the method
        SmtpMailClient.Credentials = new NetworkCredential(Username, Password, Domain);

        //send the message
        SmtpMailClient.Send(Message);
    }

    #endregion

    #region IDisposable implementation

    ~SmtpMailMessage()
    {
        Dispose(false);
    }

    public void Dispose()
    {
        Dispose(true);            
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            if (Message != null)
                Message.Dispose();
            Message = null;                
            SmtpMailClient = null;
        }
    }

    #endregion        
}
...