首页 > 代码库 > 利用email.net设置网络代理发邮件

利用email.net设置网络代理发邮件

      最近在做一个项目,客户的内部网络需要设置代理才能收发邮件,本来一个简单的东西突然变得复杂了,在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!");
			}

		}
	}
}