Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从我的C#应用程序发送电子邮件?_C#_Email_Smtpclient_Mailmessage - Fatal编程技术网

如何从我的C#应用程序发送电子邮件?

如何从我的C#应用程序发送电子邮件?,c#,email,smtpclient,mailmessage,C#,Email,Smtpclient,Mailmessage,这是我写的代码: MailMessage mail = new MailMessage("test@gmail.com", "me@myurl.com"); mail.Subject = "This is a test!!"; mail.Body = "testing..."; SmtpPermission connectAccess = new SmtpPermission(SmtpAccess.Connect);

这是我写的代码:

        MailMessage mail = new MailMessage("test@gmail.com", "me@myurl.com");

        mail.Subject = "This is a test!!";
        mail.Body = "testing...";

        SmtpPermission connectAccess = new SmtpPermission(SmtpAccess.Connect);
        System.Console.WriteLine("Access?  " + connectAccess.Access);

        SmtpClient client = new SmtpClient("mail.myurl.com", 2525);
        client.Send(mail);
它不起作用了。我在“client.Send(mail)”行中得到一个异常,该行表示“邮箱不可用。服务器响应为(MYLOCALCOMPUTERNAME)[我的本地IP]:3045当前不允许通过中继。”

Access确实返回“Connect”(我不确定这是否有必要……我添加它是为了开始故障排除过程。)

这是否意味着必须以某种方式配置本地计算机?当我将我的应用程序部署到其他人的机器上时会怎么样?是否需要进行本地配置?我只是想从我的应用程序中创建一个“发送反馈”类型的链接

(注意:在我的实际应用程序中,我在“收件人”和“发件人”中使用我的实际电子邮件地址,而我的smtp实际上是我的smtp地址,位于我的url/网站所在地)

谢谢


-Adeena

目标地址是否与smtp服务器位于同一主机上?如果不是,这将解释中继错误

您使用的SMTP服务器必须是邮件消息的最终目的地或邮件交换中的第一个跃点。例如,如果您从gmail地址向yahoo地址发送邮件,则第一个看到邮件的邮件服务器必须是您的gmail服务器或yahoo服务器。介于两者之间的服务器将拒绝邮件,因为它们禁用了中继(以减少垃圾邮件等)

如果它们是同一个主机,您是否可以通过其他方式直接向其发送邮件


通过telnet尝试此测试,以查看您的smtp服务器是否正常运行:

@Michael:谢谢您的链接。这很有帮助

我想我解决了我的问题。在创建“客户端”对象后,我确实需要添加登录凭据。我添加了以下行:

 client.Credentials = new System.Net.NetworkCredential("myloginat+myurl.com", "mypassword");
(对不起,我有这样一个习惯,在网上搜索答案和阅读手册2小时后,我最终将问题分解并发布,然后5分钟后再找出答案。:)我认为写下问题对我的帮助比其他任何事情都大)

所以它起作用了。。。虽然我不会说我完全理解它是如何工作的以及为什么工作的,但是我确实希望在我将我的程序提供给其他人使用时遇到一些问题。i、 例如,使用具有internet连接的程序的每个人都能够打开到我的服务器的smtp连接吗?我不知道答案。。。我得等着看,再多学点

谢谢!:)


-Adeena检查你的防火墙。2525 post是否打开?

某些SMTP服务器需要用户名和密码-这是您更改并解决的问题。许多SMTP服务器,例如我的ISP,不需要密码,因为它们可以识别来自ISP子区域的源IP。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;

namespace SendMail
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                SmtpClient client = new SmtpClient("smtp.gmail.com", 25);
                MailMessage msg = new MailMessage();

                NetworkCredential cred = new NetworkCredential("x@gmail.com", "password");
                msg.From = new MailAddress("x@gmail.com");
                msg.To.Add("y@gmail.com");
                msg.Subject = "A subject";
                msg.Body = "Hello,Raffi";

                client.Credentials = cred;
                client.EnableSsl = true;
                label1.Text = "Mail Sended Succesfully";
                client.Send(msg);


            }
            catch
            {
                label1.Text = "Error";
            }
        }



    }
}