如何从我的 C# 应用程序发送电子邮件?
Posted
技术标签:
【中文标题】如何从我的 C# 应用程序发送电子邮件?【英文标题】:How do I send an email message from my C# application? 【发布时间】:2010-09-26 20:50:16 【问题描述】:这是我写的代码:
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) [MY LOCAL IP]:3045 目前不允许中继。”
connectAccess.Access 确实返回“连接”(我不确定这是否有必要...我添加它以开始故障排除过程。)
这是否意味着我的本地计算机必须以某种方式进行配置?当我将我的应用程序部署到其他人的机器时呢?那里需要本地配置吗?我只是想从我的应用程序中创建一个“发送反馈”类型的链接。
(注意:在我的实际应用程序中,我在“收件人”和“发件人”中都使用了我的真实电子邮件地址,而我的 smtp 实际上是我在托管我的 url/网站的地方的 smtp 地址)
谢谢!
-阿迪娜
【问题讨论】:
【参考方案1】:@迈克尔:感谢您的链接。很有帮助。
我认为我发现了我的问题。创建“客户端”对象后,我确实需要添加登录凭据。我添加了以下行:
client.Credentials = new System.Net.NetworkCredential("myloginat+myurl.com", "mypassword");
(对不起 - 我有这样的习惯,在我在网上搜索答案并通过我的手册 2 小时后,我终于分解并发布了问题,然后 5 分钟后弄清楚了。:) 我认为写下问题的行为对我的帮助比其他任何事情都大)
所以它正在工作......虽然我不会声称我了解它如何以及为什么工作的一切,所以我确实希望在我将我的程序提供给其他人使用时遇到一些问题。即,使用具有 Internet 连接的程序的每个人都能够打开到我的服务器的这个 smtp 连接吗?我不知道答案......我将不得不等待,看看,并了解更多。
谢谢! :)
-阿迪娜
【讨论】:
一些 SMTP 服务器需要用户名和密码 - 这是您更改并解决问题的内容。许多 SMTP 服务器(例如我的 ISP)不需要密码,因为它们将源 IP 识别为来自其 ISP 的子区域。【参考方案2】:目标地址是否与您的 smtp 服务器在同一主机上?如果不是,这将解释中继错误。
您使用的 SMTP 服务器必须是邮件消息的最终目的地或邮件交换中的第一跳。例如,如果您从 gmail 地址向 yahoo 地址发送邮件,第一个看到该邮件的邮件服务器必须是您的 gmail 服务器或 yahoo 服务器。中间的服务器将拒绝该消息,因为它们已禁用中继(以减少垃圾邮件等)。
如果他们是同一个主机,你可以通过其他方式直接向它发送邮件吗?
通过 telnet 试试这个测试,看看你的 smtp 服务器是否正常运行:http://www.messagingtalk.org/content/470.html
【讨论】:
【参考方案3】:检查您的防火墙。 2525帖子开了吗?
【讨论】:
【参考方案4】: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";
【讨论】:
以上是关于如何从我的 C# 应用程序发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章