不能发送电子邮件(smtp)
问题描述:
我正在做我的功课,我点击一个按钮“验证我”后,必须发送电子邮件验证。不能发送电子邮件(smtp)
下面是按钮和文本框:
因此,流程是,你必须输入你的studentID
,然后系统会检查该数据库是你的ID存在与否。如果你的studentID存在,我们会发送确认信息(随机密码访问网络)。
但是在这里,我很难发送电子邮件,说实话,我不知道什么是错的。
这里是我的部分代码(仅发送邮件代码):
public void sendingverification()
{
//get EMAIL from spesific ID
string getEmail = "SELECT Email FROM TableStudent where StudentID = '" + IdTxt.Text + "'";
SqlCommand sqlcomEmail = new SqlCommand(getEmail, con);
//get STUDENT FIRST NAME from spesific ID
string getName = "SELECT StudentFName FROM TableStudent where StudentID = '" + IdTxt.Text + "'";
SqlCommand sqlcomName = new SqlCommand(getName, con);
string randomPw = System.Web.Security.Membership.GeneratePassword(10, 5);
string activationUrl = "http://aws.prominensa.com/izari/web-alumni/login.html";
var fromAddress = new MailAddress("[email protected]", "S2 Alumnae Team");
var toAddress = new MailAddress(sqlcomEmail.ToString(), sqlcomName.ToString());
const string fromPassword = "123456";
const string subject = "Activation Link for S2 Alumnae";
string body = "Hello " + sqlcomName.ToString() + ", ";
body += "<br /><br />your account is almost done. You can login with your account now with this link below.";
body += "<br /><" + activationUrl;
body += "<br />< Please note that you will be able to login using: ";
body += "<br />< StudentID = " + IdTxt.Text;
body += "<br />< Password = " + randomPw;
body += "<br />< Thank you.";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
}
答
是您从您的Gmail发送电子邮件,还有一些小设置,需要做的事情。 (我不记得那个确切的设置,如果你不这样做,你会得到一个错误,只是谷歌,你会发现那是什么)。
我看到你使用String来建立你的消息,不要这样做,而是使用StringBuilder。
查看此片段。
MailMessage mailObj = new MailMessage();
//verification mail
mailObj.Subject = "Your Email Subject line";
mailObj.Body = ComposeVerficationMailBody(emailDetails.MailMessage, emailDetails.RecipientName);
emailDetails.SenderName = "Your Website Name";
mailObj.IsBodyHtml = true;
mailObj.Priority = System.Net.Mail.MailPriority.High;
//TO
mailObj.To.Add(emailDetails.RecipientEmailAddress);
mailObj.BodyEncoding = Encoding.Default;
mailObj.ReplyToList.Add(emailDetails.ReplyToEmailAddress);
//From
mailObj.From = new MailAddress(senderEmailAddress, senderDisplayName);
using (SmtpClient mailClient = new SmtpClient())
{
mailClient.Host = "gmail host";
mailClient.Port = 587;
mailClient.EnableSsl = false;
mailClient.UseDefaultCredentials = true;
mailClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
//mailClient.Credentials = new NetworkCredential("senderEmail", "senderPassword");
MailAddress msg = new MailAddress(emailDetails.ReplyToEmailAddress);
mailClient.Timeout = 500000;
mailClient.Send(mailObj);
private String ComposeVerficationMailBody()
{
StringBuilder emailMessage = new StringBuilder();
//build your message here
return emailMessage.toString();
}
希望它足够您的要求。
请问1)编辑你的代码并写出正确的C#代码? 2)你的'''message'''对象似乎在你调用* Send *之前就被处理了,3)你得到了什么错误? – Ruskin
你遇到的异常或错误是什么? –