发送邮件并下载邮件附件 [英] Send Mail and download Mail Attachments

查看:126
本文介绍了发送邮件并下载邮件附件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我对异常有疑问。



我想写一个C#程序,它发送带有附件的邮件,在客户端网站上它应该下载它。



发件人

 System.Net.Mail.MailMessage mailMessage =  new  System.Net.Mail.MailMessage(); 

string mailAdress = update@xxxx.de;

mailMessage.From = new MailAddress(mailAdress.Trim());
mailMessage.To.Add(GetCostumer());
mailMessage.Subject = textBox1.Text;


foreach var fileInfo in files)
{
Attachment myAttech = new Attachment(fileInfo.FullName);
mailMessage.Attachments.Add(myAttech);
}

SmtpClient client = new SmtpClient( smtp.1und1.de,Convert.ToInt32( 25 ));
client.Credentials = new NetworkCredential(mailAdress.Trim(), PWXXX);
client.Send(mailMessage);
CommitButton.BackColor = Color.Green;





到目前为止,这很棒。发件人发送附带附件的邮件。



但是当邮件下载者想要下载带附件的邮件时,我会得到一个豁免:



给定的字符串不包含电子邮件地址所需的格式









下载邮件的代码。

我用来下载S22.dll



  private   string  GetVersions()
{
string versions = String .Empty;
使用(ImapClient client = new ImapClient( imap.1und1.de,Convert.ToInt32( 993), XXX@XXX.de,< span class =code-string> PWXXX,AuthMethod.Auto, true ))
{
Trace.WriteLine( 连接到服务器);
var uids = client.Search(SearchCondition.All());
foreach var uid in uids)
{
Trace.WriteLine(uid);
}
var messages = client.GetMessages(uids); < ---- EXCEPTION

foreach var mail 消息)
{
var header = mail.Headers [ 主题];

if (header.Contains( Version))
{
_uid = mail.Headers [ 邮件ID];
Trace.WriteLine(header.ToString());
versions = header.Trim()。Split(' n')。Last() 。修剪();
}
}
返回
}







我的代码不是CleanCode。但我只是测试这个机制。



我希望有人可以帮助我:)





matias





Auf Deutsch

Hallo zusammen,



nun sitze ich hier seit Stundenundweißichitweiter。



Mein Ziel ist es Emails mit Anhang zu versenden und wieder abzurufen。

Versenden klappt soweit。 Hier ein ausschnitt aus dem代码:



 System.Net.Mail.MailMessage mailMessage = 新的 System.Net.Mail.MailMessage(); 

string mailAdress = update@xxxx.de;

mailMessage.From = new MailAddress(mailAdress.Trim());
mailMessage.To.Add(GetCostumer());
mailMessage.Subject = textBox1.Text;


foreach var fileInfo in files)
{
Attachment myAttech = new Attachment(fileInfo.FullName);
mailMessage.Attachments.Add(myAttech);
}

SmtpClient client = new SmtpClient( smtp.1und1.de,Convert.ToInt32( 25 ));
client.Credentials = new NetworkCredential(mailAdress.Trim(), PWXXX);
client.Send(mailMessage);
CommitButton.BackColor = Color.Green;





电子邮件Wird auch versendet mit Anhang。 Kannsieüberden1und1 Mailbrowser sehen。 Soweit超级! oder auch nicht。





Nun beim Abrufen der Email erhalte ich eine例外:

Die angegebene Zeichenfolge besitzt nichtdasfür eine E-Mail-Adresse erforderliche格式。





CodefürdasAbrufen der Mails:

< pre lang =c#> private string GetVersions()
{
< span class =code-keyword> string versions = String .Empty;
使用(ImapClient client = new ImapClient( imap.1und1.de,Convert.ToInt32( 993), XXX@XXX.de,< span class =code-string> PWXXX,AuthMethod.Auto, true ))
{
Trace.WriteLine( 连接到服务器);
var uids = client.Search(SearchCondition.All());
foreach var uid in uids)
{
Trace.WriteLine(uid);
}
var messages = client.GetMessages(uids); < ---- EXCEPTION

foreach var mail 消息)
{
var header = mail.Headers [ 主题];

if (header.Contains( Version))
{
_uid = mail.Headers [ 邮件ID];
Trace.WriteLine(header.ToString());
versions = header.Trim()。Split(' n')。Last() 。修剪();
}
}
返回
}







*Natürlichist der Code noch nicht Clean。 Ich teste gerade mit dem ein wenig。



Ich hoffe jemand hat eine Idee und kann mir weiterhelfen。


$ b $bSchönenAbendeuch


$ b $bGrußmatias

解决方案

我猜 uids 的电子邮件格式不正确。



参考知道< a href =http://msdn.microsoft.com/en-us/library/01escwtf.aspx>如何:验证字符串是否为有效的电子邮件格式 [ ^ ]。


Halo everybody,

Ich have a question about an exception.

I want to write an C# program thath send mails with attachments and on the client site it should download this.

Sender

System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
 
                string mailAdress = "update@xxxx.de";
 
                mailMessage.From= new MailAddress(mailAdress.Trim());
                mailMessage.To.Add(GetCostumer());
                mailMessage.Subject = textBox1.Text;
 
 
                foreach (var fileInfo in files)
                {
                    Attachment myAttech = new Attachment(fileInfo.FullName);
                    mailMessage.Attachments.Add(myAttech);
                }
 
                SmtpClient client = new SmtpClient("smtp.1und1.de", Convert.ToInt32("25"));
                client.Credentials = new NetworkCredential(mailAdress.Trim(), "PWXXX");
                client.Send(mailMessage);
                CommitButton.BackColor = Color.Green;



So far it's great. The sender send the mail with the attachments.

But when the mail downloader want to download the mail with attachments I get an excpetion:

The given string does not contains for the E-Mail-Adress required format




Code for downloading mail.
I use for downloading the S22.dll

private string GetVersions()
          {
            string versions = String.Empty;          
            using (ImapClient client = new ImapClient("imap.1und1.de", Convert.ToInt32("993"), "XXX@XXX.de", "PWXXX", AuthMethod.Auto, true))
            {
                Trace.WriteLine("Connected to Server");
                var uids = client.Search(SearchCondition.All()); 
                foreach (var uid in uids)
                {
                    Trace.WriteLine(uid);
                }
                var messages = client.GetMessages(uids); <----EXCEPTION
 
                foreach (var mail in messages)
                {
                    var header = mail.Headers["Subject"];
 
                    if (header.Contains("Version"))
                    {
                        _uid = mail.Headers["Message-ID"];
                        Trace.WriteLine(header.ToString());
                        versions = header.Trim().Split('n').Last().Trim();
                    }
                }
                return
              }




Surly my code is not CleanCode. But i just test this mechanism.

I hope someone can help me :)


matias


Auf Deutsch
Hallo zusammen,

nun sitze ich hier seit Stunden und weiß nicht weiter.

Mein Ziel ist es Emails mit Anhang zu versenden und wieder abzurufen.
Versenden klappt soweit. Hier ein ausschnitt aus dem Code:

System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
 
                string mailAdress = "update@xxxx.de";
 
                mailMessage.From= new MailAddress(mailAdress.Trim());
                mailMessage.To.Add(GetCostumer());
                mailMessage.Subject = textBox1.Text;
 
 
                foreach (var fileInfo in files)
                {
                    Attachment myAttech = new Attachment(fileInfo.FullName);
                    mailMessage.Attachments.Add(myAttech);
                }
 
                SmtpClient client = new SmtpClient("smtp.1und1.de", Convert.ToInt32("25"));
                client.Credentials = new NetworkCredential(mailAdress.Trim(), "PWXXX");
                client.Send(mailMessage);
                CommitButton.BackColor = Color.Green;



Email Wird auch versendet mit Anhang. Kann sie über den 1und1 Mailbrowser sehen. Soweit Super! oder auch nicht.


Nun beim Abrufen der Email erhalte ich eine Exception:
"Die angegebene Zeichenfolge besitzt nicht das für eine E-Mail-Adresse erforderliche Format."


Code für das Abrufen der Mails:

private string GetVersions()
          {
            string versions = String.Empty;          
            using (ImapClient client = new ImapClient("imap.1und1.de", Convert.ToInt32("993"), "XXX@XXX.de", "PWXXX", AuthMethod.Auto, true))
            {
                Trace.WriteLine("Connected to Server");
                var uids = client.Search(SearchCondition.All()); 
                foreach (var uid in uids)
                {
                    Trace.WriteLine(uid);
                }
                var messages = client.GetMessages(uids); <----EXCEPTION
 
                foreach (var mail in messages)
                {
                    var header = mail.Headers["Subject"];
 
                    if (header.Contains("Version"))
                    {
                        _uid = mail.Headers["Message-ID"];
                        Trace.WriteLine(header.ToString());
                        versions = header.Trim().Split('n').Last().Trim();
                    }
                }
                return
              }




*Natürlich ist der Code noch nicht Clean. Ich teste gerade mit dem Code ein wenig.

Ich hoffe jemand hat eine Idee und kann mir weiterhelfen.

Schönen Abend euch

Gruß matias

解决方案

I guess the uids are not in correct E-mail format.

Refer to know How to: Verify that Strings Are in Valid Email Format[^].


这篇关于发送邮件并下载邮件附件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆