是否可以使用C#中的asp.net项目从我的计算机(localhost)发送电子邮件?最后我要将我的项目上传到网络服务器,但我想在上传前测试它.
我找到了准备好的源代码并尝试在localhost中运行它们,但它们都没有成功运行.例如这段代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
namespace sendEmail
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Btn_SendMail_Click(object sender, EventArgs e)
{
MailMessage mailObj = new MailMessage(
txtFrom.Text, txtTo.Text, txtSubject.Text, txtBody.Text);
SmtpClient SMTPServer = new SmtpClient("localhost");
try
{
SMTPServer.Send(mailObj);
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么如何使用asp.net C#发送电子邮件?我应该设置一些服务器配置吗?
Waq*_*jua 11
从Asp.Net发送电子邮件:
MailMessage objMail = new MailMessage("Sending From", "Sending To","Email Subject", "Email Body");
NetworkCredential objNC = new NetworkCredential("Sender Email","Sender Password");
SmtpClient objsmtp = new SmtpClient("smtp.live.com", 587); // for hotmail
objsmtp.EnableSsl = true;
objsmtp.Credentials = objNC;
objsmtp.Send(objMail);
Run Code Online (Sandbox Code Playgroud)
如果你有一个Gmail帐户,你可以使用谷歌smtp发送电子邮件
smtpClient.UseDefaultCredentials = false;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.Credentials = new NetworkCredential(username,passwordd);
smtpClient.EnableSsl = true;
smtpClient.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)
上面的代码应该可以正常工作,但是您需要将以下内容添加到web.config中(作为任何基于代码的SMTP配置的替代方法):
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="your.smtpserver.com" port="25" userName="smtpusername" password="smtppassword" />
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
如果您无法访问远程SMTP服务器(我使用自己的POP3/SMTP电子邮件详细信息),您可以在本地IIS实例中设置SMTP服务器,但是您可能会遇到中继问题(因为大多数ISP)消费者IP地址黑名单).
如果您无权访问SMTP服务器,那么一个不错的选择是使用以下设置而不是上述设置:
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="C:\mail"/>
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
这将创建电子邮件的硬盘副本,非常方便.您需要创建上面指定的目录,否则在尝试发送电子邮件时会收到错误.
您可以在此处根据其他答案在代码中配置这些详细信息(通过在您创建的SmtpClient对象上配置属性),但除非您从数据源获取信息,或者信息是动态的,否则它是多余的编码,当.Net已经为你做了这件事.