标题没有明确的意义,但基本上我想使用会话变量并将它们包含在c#代码中的电子邮件正文中。发送没有会话变量的电子邮件工作正常。甚至可以做我想做的事情吗?
修订后的代码:
public partial class Success : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MembershipUser userName = Membership.GetUser(User.Identity.Name);
ListBox order = (ListBox)(Session["order"]);
string name = (String)(Session["name"]);
string addressLine1 = (String)(Session["addressLine1"]);
string addressLine2 = (String)(Session["addressLine2"]);
string addressLine3 = (String)(Session["addressLine3"]);
string county = (String)(Session["county"]);
string postCode = (String)(Session["postcode"]);
SmtpClient SmtpServer = new SmtpClient("smtp.live.com");
var mail = new MailMessage();
mail.From = new MailAddress("my email");
mail.To.Add("recipient email");
mail.Subject = "Your Reciept";
mail.IsBodyHtml = true;
string htmlBody;
htmlBody = "Hi "+ userName + Environment.NewLine + Environment.NewLine +
"Here's your details: " + Environment.NewLine + Environment.NewLine
+ order + Environment.NewLine + Environment.NewLine
+ name + Environment.NewLine
+ addressLine1 + Environment.NewLine
+ addressLine2 + Environment.NewLine
+ addressLine3 + Environment.NewLine
+ county + Environment.NewLine
+ postCode + Environment.NewLine + Environment.NewLine;
mail.Body = htmlBody;
SmtpServer.Port = 587;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("my email", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
}
另请注意,Environment.NewLine
不起作用。
非常感谢您的帮助
答案 0 :(得分:0)
您在尝试访问Session
的问题 中并不清楚,但可以从Web工作进程中运行的任何代码中获取它({{3} })。但是,我更喜欢将电子邮件逻辑放在单独的类中,甚至是单独的项目。
然后,类可以将输入值作为字符串或表示数据的类型。
// good
public void SendMail( string name, string address, etc etc )
{
// mail code here
}
// better
public void SendMail( UserInfo info )
{
}
// best
public void SendMail( UserInfo info, string template )
{
// insert the user values into a template of some sort...no hardcoding format/HTML
}
关于Environment.NewLine
。您的字符串名称为htmlBody
,这意味着您要发送HTML电子邮件。您应该使用适当的标记而不是换行符。
答案 1 :(得分:0)
对于那些帮助我的人,抱歉浪费你的时间。我想通了......非常愚蠢,但我之前在以前的webform中设置了会话变量,因此会话变量为null。
没有错误的原因是(我的猜测),我在button_click函数上设置了会话变量,但也有一个postbackurl。 postbackurl必须覆盖button_click函数。
所以,以备将来参考。本来我有
string name = Session["name"].ToString();
lblName.Text = name; //this didnt work
我通过
更正了这个问题Session["name"] = lblName.Text;