最近工作中需要双屏都用在Mac上写代码,但是邮件的收取是在windows上,有时会有漏收邮件的情况发生。用C#写了一个小工具,当收到新邮件时向指定的Gtalk账户发信息,用到了agsXMPP这个开源项目
using System;
using System.Collections.Generic;
using System.Text;
using agsXMPP;
using agsXMPP.protocol.client;
using System.Threading;
using System.IO;
using Microsoft.Office.Interop.Outlook;
namespace sendmessage
{
class Program
{
static void Main(string[] args)
{
outLookApp = new ApplicationClass();
outLookApp.NewMailEx += new ApplicationEvents_11_NewMailExEventHandler(outLookApp_NewMailEx);
Console.WriteLine("Please wait for new messages...");
Console.ReadLine();
}
static void outLookApp_NewMailEx(string EntryIDCollection)
{
foreach (string item in EntryIDCollection.Split(','))
{
NameSpace outlookNS = outLookApp.GetNamespace("MAPI");
MAPIFolder mFolder =
outLookApp.Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
Console.WriteLine("Message send...");
MailItem mailItem = (MailItem)outLookApp.Session.GetItemFromID(item, mFolder.StoreID);
message = mailItem.Subject + " from <" + mailItem.SenderName + ">" + "\n" + mailItem.Body;
Console.WriteLine(message);
gtalkid = File.ReadAllText("gtalkid.txt"); // 接受消息的账户
connection = new XmppClientConnection();
connection.Server = "gmail.com";
connection.ConnectServer = "talk.google.com";
connection.Username = "用户名"; // 用来发送消息的账户
connection.Password = "密码";
connection.OnLogin += new ObjectHandler(connection_OnLogin);
connection.Open();
}
}
static void connection_OnLogin(object sender)
{
connection.Send(new agsXMPP.protocol.client.Message(gtalkid, MessageType.chat, message));
Console.WriteLine("Please wait for new messages...");
}
static XmppClientConnection connection;
static string gtalkid;
static ApplicationClass outLookApp;
static string message;
}
}