• C# 程序发不mail!!

  • 本文关于 c#
  • CodeGo.net > C# 程序发不mail!!
  •  

    C# 程序发不mail!!



    c#
    我的思路是设计一个windows程序;当程序启动的时候就调用sendmai函数;
    sendmail的
    public void sendMail()
    {
    try
    {
    System.Web.Mail.MailMessage myMail=new MailMessage();
    myMail.From = " ";
    myMail.To = " ";
    myMail.Subject = "MailTest";
    myMail.Priority = MailPriority.Low;
    myMail.BodyFormat = MailFormat.Text;
    myMail.Body = "Test";
    SmtpMail.SmtpServer="smarthost"; //your smtp server here
    SmtpMail.Send(myMail);
    }
    catch(Exception e)
    {
    throw e;
    }
    }
    在程序顶部我已经引用using System.Web.Mail;
    但是程序一运行就出现下面的错误提示
    “D:\lian\WindowsApplication5\Form1.cs(7): 类型或命名空间名称“Mail”在类或命名空间“System.Web”中不存在(是否缺少程序集引用?)”
    如果有发mail的程序可否共享一下,能发mail就行;并且是windows程序,因为我要要让它在任务计划里自己运行 1
    本文地址 :CodeGo.net/1106166/
    -------------------------------------------------------------------------------------------------------------------------
    1./// <summary>
    /// 从流中读取字符
    /// </summary>
    /// <param name="netStream">来自TcpClient的流</param>
    /// <returns>读取的字符</returns>
    protected string ReadString (NetworkStream netStream)
    {
    string sp = null;
    byte[] by = new byte[1024];
    int size = netStream.Read(by,0,by.Length);// 读取数据流
    if (size > 0)
    {
    sp = Encoding.Default.GetString(by);// 转化为String
    }
    return sp;
    }
    /// <summary>
    /// 发出命令并判断返回信息是否正确
    /// </summary>
    /// <param name="netStream">来自TcpClient的流</param>
    /// <param name="command">命令</param>
    /// <param name="state">正确的状态码</param>
    /// <returns>是否正确</returns>
    protected bool Command (NetworkStream netStream, string command,
    string state)
    {
    string sp=null;
    bool success=false;
    try
    {
    WriteString (netStream, command);// 写入命令
    sp = ReadString (netStream);// 接受返回信息
    if (sp.IndexOf(state) != -1)// 判断状态码是否正确
    success=true;
    }
    catch(Exception)
    {
    // 忽略错误
    }
    return success;
    }
    /// <summary>
    /// 字符串编码为Base64
    /// </summary>
    /// <param name="str">字符串</param>
    /// <returns>Base64编码的字符串</returns>
    protected string ToBase64 (string str)
    {
    try
    {
    byte[] by = Encoding.Default.GetBytes (str.ToCharArray());
    str = Convert.ToBase64String (by);
    }
    catch(Exception)
    {
    // 忽略错误
    }
    return str;
    }
    /// <summary>
    /// 附件信息
    /// </summary>
    public struct AttachmentInfo
    {
    /// <summary>
    /// 附件的文件名 [如果输入路径,则自动转换为文件名]
    /// </summary>
    public string FileName {
    get { return fileName; }
    set { fileName = Path.GetFileName(value); }
    } private string fileName;
    /// <summary>
    /// 附件的内容 [由经Base64编码的字节组成]
    /// </summary>
    public string Bytes {
    get { return bytes; }
    set { if (value != bytes) bytes = value; }
    } private string bytes;
    /// <summary>
    /// 从流中读取附件内容并构造
    /// </summary>
    /// <param name="ifileName">附件的文件名</param>
    /// <param name="stream">流</param>
    public AttachmentInfo (string ifileName, Stream stream)
    {
    fileName = Path.GetFileName (ifileName);
    byte[] by = new byte [stream.Length];
    stream.Read (by,0,(int)stream.Length); // 读取文件内容
    //格式转换
    bytes = Convert.ToBase64String (by); // 转化为base64编码
    }
    /// <summary>
    /// 按照给定的字节构造附件
    /// </summary>
    /// <param name="ifileName">附件的文件名</param>
    /// <param name="ibytes">附件的内容 [字节]</param>
    public AttachmentInfo (string ifileName, byte[] ibytes)
    {
    fileName = Path.GetFileName (ifileName);
    bytes = Convert.ToBase64String (ibytes); // 转化为base64编码
    }
    /// <summary>
    /// 从文件载入并构造
    /// </summary>
    /// <param name="path"></param>
    public AttachmentInfo (string path)
    {
    fileName = Path.GetFileName (path);
    FileStream file = new FileStream (path, FileMode.Open);
    byte[] by = new byte [file.Length];
    file.Read (by,0,(int)file.Length); // 读取文件内容
    //格式转换
    bytes = Convert.ToBase64String (by); // 转化为base64编码
    file.Close ();
    }
    }
    }
    }
    // 使用:
    MailSender ms = new MailSender ();
    ms.From = " ";
    ms.To = " ";
    ms.Subject = "Subject";
    ms.Body = "body text";
    ms.UserName = "########"; // 怎么能告诉你呢
    ms.Password = "**"; // 怎么能告诉你呢
    ms.Server = "smtp.tom.com";
    ms.Attachments.Add (new MailSender.AttachmentInfo (@"D:\test.txt"));
    Console.WriteLine ("mail sending...");
    try
    {
    ms.SendMail ();
    Console.WriteLine ("mail sended.");
    }
    catch (Exception e)
    {
    Console.WriteLine (e);
    }
    2. c#自带的邮件不好用,可以试试 JMail44_pro.exe这个组件,网上有下载。
    本文标题 :C# 程序发不mail!!
    本文地址 :CodeGo.net/1106166/
    1. 列表视图阈值exeeded错误代码,而不是在SharePoint
    2. donet的Socket通信问题
    3. DataSet中错误要么InvalidConstraintException或不能在不同的数据集表之间的关系
    4. 那位知道在PDA上编程?
    5. 不同类型与通用基类的返回列表
    6. 如何让.Net程序运行后删除自己??
    7. 解析类型层次结构的装配
    8. C# 如何调用Win32 API?
    9. “FormatException是未处理”而程序没有计算结果
    10. c# 里怎么使用 CreateObject

     
    

    Copyright © 2017 CodeGo.net
    http://codego.net/xinwen/ 足球比分网 足球比分 医药招商网 邵阳县新闻