我想使用c#从电子邮件中挑选所需的文字?你能帮我解决一下吗?
我需要以下示例电子邮件格式:
city,
xxxx@hotmail.com
privileged customer.
以下是示例:
我收到了来自xxxx@gmail.com的电子邮件
内容如下:
Hi xxxx,
here is the some of the lists,
Title:CITY
Email:xxxx@hotmail.com
Package:<b>Privileged customer</b>
谢谢,
此致 XXXXX。
答案 0 :(得分:2)
这是示例代码。将解析出电子邮件内容。
using System.Text.RegularExpressions
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string content = "Hi:Mr. Title:Sample Email:default123_11@gmail.com";
// Here we call Regex.Match.
Match match = Regex.Match(content, @"Email:([a-zA-Z0-9@._]*)",
RegexOptions.IgnoreCase);
// Here we check the Match instance.
if (match.Success)
{
// Finally, we get the Group value and display it.
string key = match.Groups[1].Value;
Console.WriteLine(key);
}
Console.ReadKey();
}
}
}
答案 1 :(得分:1)
您可以在一定程度上使用正则表达式。此表达式.*:(.*)
将返回所有键值对。但是,您需要在事后接受匹配并删除<b>
和</b>
标记之类的内容。
var matches = Regex.Match(input, ".*:(.*)");
以下是Regex 101来证明这一点。
答案 2 :(得分:0)
static void Main(string[] args)
{
var client = new Pop3Client();
client.Connect("pop.gmail.com", 995, true);
client.Authenticate("xxxxx@gmail.com", "yourpassword");
var count = client.GetMessageCount();
Message message = client.GetMessage(count);
int messageCount = client.GetMessageCount();
// We want to download all messages
List<Message> allMessages = new List<Message>(messageCount);
// Messages are numbered in the interval: [1, messageCount]
// Ergo: message numbers are 1-based.
// Most servers give the latest message the highest number
for (int i = messageCount; i > 0; i--)
{
allMessages.Add(client.GetMessage(i));
}
foreach (Message item in allMessages)
{
MessagePart mpart = item.FindFirstPlainTextVersion();
string s = Encoding.UTF8.GetString(mpart.Body, 0, mpart.Body.Length);
if (s.Contains("Name") && s.Contains("Email") && s.Contains("<b>"))
{
List<string> newstrlist=new List<string>();
string[] strarry = new string[1000];
strarry= s.Split('\n');
foreach (string strar in strarry)
{
if (strar.Contains("@"))
{
newstrlist.Add(strar.Remove(0, 6).Trim('<', '>', '/', 'b', ',', '.', '-', ':', ';', '!', '^', '(', ')', '_', '+', '\n', '\r', '\t', '\b',' '));//email ,name,subscription
}
if (strar.Contains("Name"))
{
newstrlist.Add(strar.Remove(0, 5).Trim('<', '>', '/', 'b', ',', '.', '-', ':', ';', '!', '^', '(', ')', '_', '+', '\n', '\r', '\t',' ', '\b'));
}
if (strar.Contains("<b>"))
{
newstrlist.Add(strar.Trim().Remove(0, 4).Trim('<', '>', '/', 'b', ',', '.', '-', ':', ';', '!', '^', '(', ')', '_', '+', '\n', '\r', '\t', '\b', ' '));
}
// Console.WriteLine(strar);
}
foreach (string str in newstrlist)
{
Console.WriteLine(str);
}
}
}
Console.ReadKey();
}