如何从我的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";
}
}
}
}