最近在做一个项目,客户的内部网络需要设置代理才能收发邮件,本来一个简单的东西突然变得复杂了,在baidu搜索了很久都没找到适合的组件,baidu就像个废物一样,没办法只能去yahoo搜,结果在微软的组件网站上找到了email.net,地址是:http://visualstudiogallery.msdn.microsoft.com/28b96cd4-b755-48a0-b686-9abb7d5607a8, 这个网站还可以找到很多不错的关于.net的组件,C#开发者可以多上上。
通过代理发邮件的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Email.Net.Common;
using Email.Net.Common.Collections;
using Email.Net.Common.Configurations;
using Email.Net.Smtp;
namespace ProxyUsageDemo
{
public partial class Demo : Form
{
public Demo()
{
InitializeComponent();
proxyType.Items.AddRange(new object [] {EProxyType.No, EProxyType.SOCKS5, EProxyType.SOCKS4});
proxyType.DropDownStyle = ComboBoxStyle.DropDownList;
proxyType.SelectedIndex = 1;
proxyType.Refresh();
}
private void sendMessage_Click(object sender, EventArgs e)
{
//Create and send message using proxy
//SMTP client settings
//URL of host to connect to
target.Host = hostBox.Text;
//TCP port for connection
target.Port = (ushort)portNum.Value;
//Username to login to the SMTP server
target.Username = loginBox.Text;
//Password to login to the SMTP server
target.Password = passwordBox.Text;
//Configure proxy
target.ProxyType = (EProxyType)proxyType.SelectedItem;
target.ProxyHost = proxyHostBox.Text;
target.ProxyPort =(ushort) proxyPortNum.Value;
target.ProxyUser = proxyUserBox.Text;
target.ProxyPassword = proxyPasswordBox.Text;
//Create address and message
EmailAddressCollection addressCollection = new EmailAddressCollection();
addressCollection.Add(new EmailAddress(toBox.Text));
//Create message
SmtpMessage message = new SmtpMessage(
new EmailAddress(fromBox.Text),//Source address
addressCollection,//Address of the recipient
subjectBox.Text,//Message subject
messageBox.Text //Message text
);
SendResult result = target.SendOne(message);//Send message
if (result.IsSuccessful)
{
MessageBox.Show("Message sent successful!");
}
else
{
MessageBox.Show("Message sending failed!");
}
}
}
}