我正在使用OpenPop.net尝试解析来自给定收件箱中所有电子邮件的链接.我找到了这个方法来获取所有消息:
public static List<OpenPop.Mime.Message> FetchAllMessages(string hostname, int port, bool useSsl, string username, string password)
{
// The client disconnects from the server when being disposed
using (Pop3Client client = new Pop3Client())
{
// Connect to the server
client.Connect(hostname, port, useSsl);
// Authenticate ourselves towards the server
client.Authenticate(username, password);
// Get the number of messages in the inbox
int messageCount = client.GetMessageCount();
// We want to download all messages
List<OpenPop.Mime.Message> allMessages = new List<OpenPop.Mime.Message>(messageCount);
// Messages are numbered in the interval: …Run Code Online (Sandbox Code Playgroud) 我创建了一个Web电子邮件应用程序,如何查看和保存附件?
我正在使用OpenPop,第三方dll,我可以发送带附件的电子邮件和阅读没有附件的电子邮件.
这很好用:
Pop3Client pop3Client = (Pop3Client)Session["Pop3Client"]; // Creating newPopClient
int messageNumber = int.Parse(Request.QueryString["MessageNumber"]);
Message message = pop3Client.GetMessage(messageNumber);
MessagePart messagePart = message.MessagePart.MessageParts[1];
lblFrom.Text = message.Headers.From.Address; // Writeing message.
lblSubject.Text = message.Headers.Subject;
lblBody.Text=messagePart.BodyEncoding.GetString(messagePart.Body);
Run Code Online (Sandbox Code Playgroud)
第二部分代码显示了附件的内容,但只有在它是文本文件时才有用.我需要能够保存附件.我在这里的代码的底部部分写了我的消息正文,所以如果我收到一个附件,我无法查看我的消息正文.
if (messagePart.IsAttachment == true) {
foreach (MessagePart attachment in message.FindAllAttachments()) {
if (attachment.FileName.Equals("blabla.pdf")) { // Save the raw bytes to a file
File.WriteAllBytes(attachment.FileName, attachment.Body); //overwrites MessagePart.Body with attachment
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在搞乱OpenPop,一个用C#编写的用于POP3邮件获取的库.它似乎工作正常,但我不明白如何在显式附加文件与邮件之间做出区分,以及像HTML内容邮件中的图片之类的东西.这个库将它们全部视为"附件".根据我的需要,我不会将HTML邮件中的图片视为附件.
来自图书馆文档:
MessagePart被认为是附件,如果
- 它不是保留文本而不是MultiPart消息或
- 它有一个Content-Disposition标题,表明它是一个附件
至少在理论上我应该做什么或搜索什么(因为我对邮件协议并不熟悉)?
我开发了一个Web应用程序,其中有一个功能可以为特定的销售订单输入注释.
当客户或客户服务主管输入注释时,会向相关方发送电子邮件通知(使用C#中的SmtpClient和MailMessage对象发送电子邮件通知).
using (MailMessage objEmail = new MailMessage())
{
Guid objGuid = new Guid();
objGuid = Guid.NewGuid();
String MessageID = "<" + objGuid.ToString() + ">";
objEmail.Body = messagebody.ToString();
objEmail.From = new MailAddress(sFrmadd, sFrmname);
objEmail.Headers.Add("Message-Id", MessageID);
objEmail.IsBodyHtml = true;
objEmail.ReplyTo = new MailAddress("replyto@email.com");
objEmail.Subject = sSubject;
objEmail.To.Add(new MailAddress(sToadd));
SmtpClient objSmtp = new SmtpClient();
objSmtp.Credentials = new NetworkCredential("mynetworkcredential", "mypassword");
objSmtp.DeliveryMethod = SmtpDeliveryMethod.Network;
objSmtp.EnableSsl = true;
objSmtp.Host = "myhostname";
objSmtp.Port = 25;
objSmtp.Timeout = 3 * 3600;
objSmtp.Send(objEmail);
}
Run Code Online (Sandbox Code Playgroud)
我设置Guid为Message-Id …
我想从我的Gmail帐户中读取emial.我正在使用"OpenPop.Pop3"来阅读我的Gmail帐户中的电子邮件,我使用下面的代码: -
using OpenPop.Pop3;
public DataTable ReadEmailsFromId()
{
DataTable table = new DataTable();
try
{
using (Pop3Client client = new Pop3Client())
{
int messageCount = client.GetMessageCount();
for (int i = messageCount; i > 0; i--)
{
table.Rows.Add(client.GetMessage(i).Headers.Subject, client.GetMessage(i).Headers.DateSent);
string msdId = client.GetMessage(i).Headers.MessageId;
OpenPop.Mime.Message msg = client.GetMessage(i);
OpenPop.Mime.MessagePart plainTextPart = msg.FindFirstPlainTextVersion();
string message = plainTextPart.GetBodyAsText();
}
}
}
return table;
}
Run Code Online (Sandbox Code Playgroud)
但它在2016年3月4日之前收到的电子邮件,没有提取新的/最新的电子邮件."OpenPop.Pop3"中有任何限制,还是我遗漏了什么?
使用OpenPop连接到Gmail时,我只能检索一次电子邮件,即使我不删除它也是如此.使用GetMessageCount()我总是收到0封电子邮件.我怎样才能收到那里的所有电子邮件?
只有在阅读并处理它们之后,我才能下令删除.我使用以下代码来获取电子邮件:
using (var client = new Pop3Client())
{
// Connect to the server
client.Connect(serverData.Hostname, serverData.Port, serverData.UseSsl);
// Authenticate ourselves towards the server
client.Authenticate(serverData.Username, serverData.Password, AuthenticationMethod.UsernameAndPassword);
var emailAmount = client.GetMessageSizes().Count;
// Fetch all the current uids seen
var msgCount = client.GetMessageCount();
.....
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用OpenPop.NET访问gmail帐户,但是即使使用基本测试代码,我也会收到以下错误消息.
错误:System.Reflection.TargetInvocationException:调用目标已抛出异常.---> System.IO.FileNotFoundException:无法加载文件或程序集'OpenPop,Version = 2.0.4.369,Culture = neutral,PublicKeyToken = null'或其依赖项之一.该系统找不到指定的文件.文件名:'OpenPop,Version = 2.0.4.369,Culture = neutral,PublicKeyToken = null'at ST_1694f4bcdf2a4068ae871201a2216457.csproj.ScriptMain.Main()
警告:装配绑定日志记录已关闭.要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败日志记录会导致一些性能损失.要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog].
---内部异常堆栈跟踪的结束---在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr)的System.RuntimeMethodHandle._InvokeMethodFast(Object target,Object []参数,SignatureStruct&sig,MethodAttributes methodAttributes,RuntimeTypeHandle typeOwner)中System.RuntimeType.InvokeMember(String name)的System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化),Binder binder,Object []参数,CultureInfo文化,布尔值skipVisibilityChecks) ,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier [] modifiers,CultureInfo culture,String [] namedParams)at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
我试图在具有.NET framework 3.5和4的Windows 7计算机上的SQL Server Business Intelligence Development Studio 2008中的SSIS包中执行此操作.OpenPop dll和引用它的脚本任务都是在3.5中构建的.我已经研究了几天,但一直没能找到任何可以修复它的东西.我尝试从源重新编译OpenPop dll并多次删除和重新添加引用.
我目前正在使用的代码发布如下:
Pop3Client client = new Pop3Client();
try
{
client.Connect("pop.gmail.com", 995, true);
try
{
client.Authenticate("user@domain.com", "mypassword");
Console.WriteLine("Success");
client.Disconnect();
}
catch
{
Console.WriteLine("Failed to authenticate");
Dts.TaskResult = …Run Code Online (Sandbox Code Playgroud) 我使用openpop .net库从邮件服务器检索邮件与POP3.一切正常但我无法检索每个邮件附件的大小.我创建了GetMessageSize(i),但这个大小是所有附件的总和.
那么问题是我如何检索每个附件的大小.
有谁能够帮我?谢谢!
有什么办法可以将OpenPop.NET MailMessage转换为System.Net.Mail.MailMessage?
我正在使用OpenPop.Net连接到C#应用程序中的GoDaddy托管电子邮件帐户.Authenticate()方法抛出异常,并显示错误消息"用于检索响应的流已关闭".我加倍检查POPServer,POPPort,POPUserName和POPPassword值是否有效使用Outlook 2007.
using (Pop3Client pop3 = new Pop3Client())
{
pop3.Connect(POPServer, POPPort, false);
pop3.Authenticate(POPUserName, POPPassword);
Int32 messageCount = pop3.GetMessageCount();
}
Run Code Online (Sandbox Code Playgroud) 在openpop中我们必须调用disconnect()或dispos()来提交delete命令,如何在调用pop3Client.DeleteMessage()时立即删除消息?
我正在尝试检索电子邮件附件并使用下面的代码将其保存到文件系统中的特定目录.
Dim objMail As Message = New Message(Encoding.ASCII.GetBytes(strMessage))
For Each att In objMail.FindAllAttachments()
Dim Stream as FileStream = New FileStream("D:\XX\" & att.FileName.ToString(),
FileMode.Create)
Dim BinaryStream As New BinaryWriter(Stream)
BinaryStream.Write(BitConverter.ToString(att.Body))
BinaryStream.Close()
Next
Run Code Online (Sandbox Code Playgroud)
我也试过了 att.GetBodyasText()
使用此代码,我可以将附件文件保存在所需的文件夹中.但是在打开文件时,我收到了错误信息
文件格式不正确或未正确解码.
我是MIME编码/解码的新手.