系统.发送电子邮件时出现错误
本文关键字:错误 电子邮件 系统 | 更新日期: 2023-09-27 17:50:14
错误:一个类型为" System "的异常。"格式异常"在System.dll中发生,但未在用户代码中处理。附加信息:指定的字符串不在电子邮件地址所需的格式中。
我正试图发送邮件,但代码给出了一个异常系统。格式例外。我想在一段时间后发送邮件。下面是代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Net.Mail;
using System.Net;
namespace esaote
{
public partial class user : System.Web.UI.Page
{
SqlConnection con;
protected void Page_Load(object sender, EventArgs e)
{
con = new SqlConnection("Data Source=ASHISH;Initial Catalog=esaote;Integrated Security=True");
TextBox6.Text = DateTime.Now.ToShortDateString();
TextBox7.Text = DateTime.Now.AddHours(1.00).ToShortDateString();
maildate();
}
protected void Button1_Click(object sender, EventArgs e)
{
string q = "insert into info(c_name,c_address, machine, s_version, email,i_date,due_date) values(@c_name, @c_address, @machine, @s_version, @email, @i_date,@due_date)";
SqlCommand cmd = new SqlCommand(q, con);
cmd.Parameters.AddWithValue("@c_name", TextBox1.Text);
cmd.Parameters.AddWithValue("@c_address", TextBox2.Text);
cmd.Parameters.AddWithValue("@machine", TextBox3.Text);
cmd.Parameters.AddWithValue("@s_version", TextBox4.Text);
cmd.Parameters.AddWithValue("@email", TextBox5.Text);
cmd.Parameters.AddWithValue("@i_date",Convert.ToDateTime( TextBox6.Text ));
cmd.Parameters.AddWithValue("@due_date",Convert.ToDateTime( TextBox7.Text));
//string due_date = DateTime.Now.ToShortDateString() + DateTime.Now.AddMonths(6).ToShortDateString();
try
{
con.Open();
if (cmd.ExecuteNonQuery() > 0)
{
Response.Write("<script languge='javascript'>alert('data inserted');</script>");
}
}
catch (Exception exp)
{
Console.Write(exp.Message);
}
finally
{
con.Close();
}
}
public void maildate()
{
SqlConnection con =new SqlConnection("Data Source=ASHISH;Initial Catalog=esaote;Integrated Security=True");
string s = "select * from info";
SqlCommand cmd = new SqlCommand(s,con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
for (int i = 0; i < ds.Tables[0].Rows.Count;i++ )
{
DateTime id = Convert.ToDateTime( ds.Tables[0].Rows[i]["i_date"]);
DateTime pd = Convert.ToDateTime(ds.Tables[0].Rows[i]["due_date"]);
double diff = (pd - id).TotalDays;
if(diff>=1)
{
string email = Convert.ToString(ds.Tables[0].Rows[i]["email"]);
string customer = Convert.ToString(ds.Tables[0].Rows[i]["c_name"]);
using (MailMessage mm = new MailMessage(" Service Call","ashishbhatt1501@gmailcom"))
{
// mm.Body = "your sevice for '" + customer + "' are due.";
mm.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential("ashishbhatt1501@gmail.com", "062621562a");
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
try
{
smtp.Send(mm);
ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
}
catch (Exception exp) { Console.Write("helllo" + exp); }
}
}
}
}
}
}
MailMessage
类中的第一个参数是来自地址的,但您似乎正在使用
MailMessage(" Service Call",
将此更改为您想要使用的from地址。
另外,您在哪里设置To
?您最好构造MailMessage
并在Using
语句中设置这些属性…
using (MailMessage mm = new MailMessage())
{
mm.from = "ashishbhatt1501@gmailcom";
mm.to = email; //I'm assuming email from your code.
mm.subject = "Service Call"; //again, this is just an assumption
...
}
注:我只是想顺便提一下;上面的一些代码应该重构:
- 连接字符串可以移动到
config
文件 - 邮件发送代码可以移动到一个新的类,并公开一个
SendMail
方法,以帮助减少代码复制 - 你可以把
Insert
代码包装成DataHelper
类。
基本上,我是说您可以将大量代码移出代码隐藏文件。