系统.发送电子邮件时出现错误

本文关键字:错误 电子邮件 系统 | 更新日期: 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类。

基本上,我是说您可以将大量代码移出代码隐藏文件。