如何用ASP发送电子邮件..NET和c#

本文关键字:NET 电子邮件 何用 ASP | 更新日期: 2023-09-27 18:09:23

我正在尝试创建一个接收用户信息(包括电子邮件)的web服务,然后发送确认电子邮件。你知道我该怎么做吗?我必须在我的机器上安装SMTP服务器吗?

如何用ASP发送电子邮件..NET和c#

您可以使用任何远程SMTP服务器,除非需要,否则不需要在本地设置。我为它创建了一个辅助方法:

您需要导入命名空间:

using System;
using System.Net.Mail;

下面是一个助手方法,它显示了使用SmtpClient类发送的用法:

public static void SendMessage(string smtpServer, string mailFrom, string mailFromDisplayName, string[] mailTo, string[] mailCc, string subject, string body)
{
    try
    {
        using (SmtpClient client = new SmtpClient(smtpServer))
        {
            string to = mailTo != null ? string.Join(",", mailTo) : null;
            string cc = mailCc != null ? string.Join(",", mailCc) : null;
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress(mailFrom, mailFromDisplayName);
            mail.To.Add(to);
            if (cc != null)
            {
                mail.CC.Add(cc);
            }
            mail.Subject = subject;
            mail.Body = body.Replace(Environment.NewLine, "<BR>");
            mail.IsBodyHtml = true;
            client.Send(mail);
        }
    }
    catch (Exception ex)
    {
        // exception handling
    }
}

请注意,如果您希望邮件尽可能快地发送而不延迟,那么您应该在完成SmtpClient后处理它。有关不立即发送消息的更多信息,请参阅System.Net.Mail和MailMessage。上面的方法已经处理了它,因为SmtpClient被包装在using块中,所以这个方法已经处理好了。

你试过谷歌答案吗?它遍布网络和stackoverflow -

通过Gmail在。net中发送电子邮件

关于第一个问题

System.Web.Mail.MailMessage message=new System.Web.Mail.MailMessage();
message.From="from e-mail";
message.To="to e-mail";
message.Subject="Message Subject";
message.Body="Message Body";
System.Web.Mail.SmtpMail.SmtpServer="SMTP Server Address";
System.Web.Mail.SmtpMail.Send(message);
If you want the shortest way:
System.Web.Mail.SmtpMail.SmtpServer="SMTP Host Address";
System.Web.Mail.SmtpMail.Send("from","To","Subject","MessageText");

和关于SMTP,不,你可以使用SMTP谷歌为例或雅虎

通过Google Apps帐户通过c#发送电子邮件

使用c#通过Gmail SMTP服务器发送邮件

为了确保健壮的交付,您的解决方案应该包含两个部分:

客户端应用程序(本例中为web服务)应该向消息队列(MSMQ)提交一封电子邮件消息(序列化为xml)。

在后台运行的windows服务应用程序(守护进程)应该在消息到达时(或按照计划)检查队列,对消息进行反序列化,并将其发送到SMTP服务器。

如果这是在windows上构建的,您可以在您的工作站上使用smtp4dev来表示SMTP服务器。Windows服务、SMTP服务器、MSMQ服务器、Web服务器都可以在不同的机器上。

不,您不需要设置一个本地smtp服务器,正如mservidio上面提到的,您可以使用远程服务器。我会这样写:

:

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

使用下面的方法,你可以发送带有附件的邮件。

        public static void Send(string replyTo, string from, string subject, string body, bool html, List<string> files)
    {
            MailMessage message = new MailMessage();
            message.To.Add(replyTo);
            message.Subject = subject;
            message.From = new MailAddress(from);
            message.Body = body;
            message.IsBodyHtml = html;
            if (files != null) message = AttachFiles(files, message);
            SmtpClient sMail = new SmtpClient("smtp.client.com");
            sMail.Port = 25;
            sMail.DeliveryMethod = SmtpDeliveryMethod.Network;
            sMail.Credentials = new NetworkCredential("user", "pass");
            sMail.Send(message);
    }
    public static MailMessage AttachFiles(List<string> files, MailMessage message)
    {
        foreach (string filePath in files)
        {
            message.Attachments.Add(new Attachment(filePath));
        }
        return message;
    }
public void SendMail(string tomail, string password)
{
    {
        try
        {
            SmtpClient mailClient = new SmtpClient();
            MailMessage mailMessage = new MailMessage();               
            mailMessage.To.Add(tomail);
            mailMessage.From = new MailAddress("email", "show name");
            mailMessage.Subject = "Your password";
            mailMessage.Body = "Your password is :" + password;
            mailMessage.IsBodyHtml = true;
            mailMessage.Priority = MailPriority.Normal;
            mailClient.Host = "Smtp.gmail.com";
            mailClient.Port = 587;
            mailClient.UseDefaultCredentials = false;
            mailClient.Credentials = new NetworkCredential("ur email id", "ur password");
            mailClient.EnableSsl = true;
            mailClient.Send(mailMessage);
           lblPassword.Text = "<b>Mail Successfully Sent..!!</b>";
        }
        catch (Exception ex)
        {
            ex.ToString();
           lblPassword.Text = "<b>Error For Sending Mail..!!</b>";
        }
    }
}