Как отправить электронное письмо в формате HTML с веб-сайта asp.net

На моем веб-сайте 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);

person Mark    schedule 04.11.2011    source источник
comment
Какая версия .NET. Отправка электронной почты в .NET 1.1 сильно отличается от 2.0–4.0.   -  person Ryan Ternier    schedule 04.11.2011
comment
возможный дубликат Могу ли я настроить шаблоны HTML / электронной почты с ASP.NET?   -  person Damith    schedule 04.11.2011


Ответы (3)


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

И это все.

person Artak    schedule 04.11.2011

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

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

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

person Ryan Ternier    schedule 04.11.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("[email protected]");           

        //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        
}
person James Johnson    schedule 04.11.2011