add some debug
parent
fa4f21b587
commit
be11b1e01c
|
@ -1,4 +1,5 @@
|
||||||
using MailKit;
|
using log4net;
|
||||||
|
using MailKit;
|
||||||
using MailKit.Net.Imap;
|
using MailKit.Net.Imap;
|
||||||
using MailKit.Net.Smtp;
|
using MailKit.Net.Smtp;
|
||||||
using MailKit.Security;
|
using MailKit.Security;
|
||||||
|
@ -11,6 +12,7 @@ using OpenSim.Region.Framework.Scenes;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
@ -22,6 +24,8 @@ namespace OpenSim.Modules.EMail
|
||||||
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "MailKitMailModule")]
|
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "MailKitMailModule")]
|
||||||
class MailKitMailModule : INonSharedRegionModule, IEmailModule
|
class MailKitMailModule : INonSharedRegionModule, IEmailModule
|
||||||
{
|
{
|
||||||
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
private IConfigSource m_config = null;
|
private IConfigSource m_config = null;
|
||||||
private bool m_enabled = false;
|
private bool m_enabled = false;
|
||||||
|
|
||||||
|
@ -125,30 +129,39 @@ namespace OpenSim.Modules.EMail
|
||||||
|
|
||||||
private void checkForMails(object sender, ElapsedEventArgs e)
|
private void checkForMails(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
|
m_log.Info("[" + Name + "] checkForMails");
|
||||||
|
|
||||||
using (var client = new ImapClient())
|
using (var client = new ImapClient())
|
||||||
{
|
{
|
||||||
client.CheckCertificateRevocation = false;
|
client.CheckCertificateRevocation = false;
|
||||||
|
|
||||||
if (IMAP_SERVER_SSL == true)
|
if (IMAP_SERVER_SSL == true)
|
||||||
{
|
{
|
||||||
|
m_log.Info("[" + Name + "] Connect SSL");
|
||||||
client.Connect(IMAP_SERVER_HOSTNAME, IMAP_SERVER_PORT, SecureSocketOptions.Auto);
|
client.Connect(IMAP_SERVER_HOSTNAME, IMAP_SERVER_PORT, SecureSocketOptions.Auto);
|
||||||
}
|
}
|
||||||
else if (IMAP_SERVER_SSL == true)
|
else if (IMAP_SERVER_SSL == true)
|
||||||
{
|
{
|
||||||
|
m_log.Info("[" + Name + "] Connect TLS");
|
||||||
client.Connect(IMAP_SERVER_HOSTNAME, IMAP_SERVER_PORT, SecureSocketOptions.StartTlsWhenAvailable);
|
client.Connect(IMAP_SERVER_HOSTNAME, IMAP_SERVER_PORT, SecureSocketOptions.StartTlsWhenAvailable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
client.Connect(IMAP_SERVER_HOSTNAME, IMAP_SERVER_PORT, SecureSocketOptions.None);
|
client.Connect(IMAP_SERVER_HOSTNAME, IMAP_SERVER_PORT, SecureSocketOptions.None);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IMAP_SERVER_LOGIN != String.Empty && IMAP_SERVER_PASSWORD != String.Empty)
|
if (IMAP_SERVER_LOGIN != String.Empty && IMAP_SERVER_PASSWORD != String.Empty)
|
||||||
|
{
|
||||||
|
m_log.Info("[" + Name + "] Login with " + IMAP_SERVER_LOGIN + ";" + IMAP_SERVER_PASSWORD);
|
||||||
client.Authenticate(IMAP_SERVER_LOGIN, IMAP_SERVER_PASSWORD);
|
client.Authenticate(IMAP_SERVER_LOGIN, IMAP_SERVER_PASSWORD);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
IMailFolder IMAPInbox = client.Inbox;
|
IMailFolder IMAPInbox = client.Inbox;
|
||||||
IMAPInbox.Open(FolderAccess.ReadWrite);
|
IMAPInbox.Open(FolderAccess.ReadWrite);
|
||||||
|
|
||||||
|
m_log.Info("[" + Name + "] Found "+ IMAPInbox.Count + " messages.");
|
||||||
for (int i = 0; i < IMAPInbox.Count; i++)
|
for (int i = 0; i < IMAPInbox.Count; i++)
|
||||||
{
|
{
|
||||||
MimeMessage message = IMAPInbox.GetMessage(i);
|
MimeMessage message = IMAPInbox.GetMessage(i);
|
||||||
|
@ -161,6 +174,7 @@ namespace OpenSim.Modules.EMail
|
||||||
{
|
{
|
||||||
m_messages.Add(message);
|
m_messages.Add(message);
|
||||||
IMAPInbox.SetFlags(i, MessageFlags.Deleted, true);
|
IMAPInbox.SetFlags(i, MessageFlags.Deleted, true);
|
||||||
|
m_log.Info("[" + Name + "] Get Message for objekt " + sceneObject.Name + " (" + sceneObject.UUID + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,26 +226,40 @@ namespace OpenSim.Modules.EMail
|
||||||
public Email GetNextEmail(UUID objectID, string sender, string subject)
|
public Email GetNextEmail(UUID objectID, string sender, string subject)
|
||||||
{
|
{
|
||||||
SceneObjectPart sceneObject = m_scene.GetSceneObjectPart(objectID);
|
SceneObjectPart sceneObject = m_scene.GetSceneObjectPart(objectID);
|
||||||
|
|
||||||
|
m_log.Info("[" + Name + "] GetNextEmail: " + sceneObject.Name + " (" + sceneObject.UUID + ")");
|
||||||
|
|
||||||
List<MimeMessage> messages = m_messages.FindAll(X => X.Subject.Contains(subject) && X.Sender.GetAddress(true).Contains(sender));
|
List<MimeMessage> messages = m_messages.FindAll(X => X.Subject.Contains(subject) && X.Sender.GetAddress(true).Contains(sender));
|
||||||
|
|
||||||
|
MimeMessage lastMessage = null;
|
||||||
|
Email lslMessage = null;
|
||||||
|
|
||||||
foreach (MimeMessage message in messages)
|
foreach (MimeMessage message in messages)
|
||||||
{
|
{
|
||||||
|
if (lslMessage != null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
lastMessage = message;
|
||||||
|
|
||||||
foreach (MailboxAddress adress in message.To.Mailboxes)
|
foreach (MailboxAddress adress in message.To.Mailboxes)
|
||||||
{
|
{
|
||||||
Email lslMessage = new Email();
|
if (lslMessage != null)
|
||||||
lslMessage.time = messages[0].Date.ToUnixTimeSeconds().ToString();
|
continue;
|
||||||
lslMessage.message = messages[0].Body.ToString();
|
|
||||||
lslMessage.sender = messages[0].Sender.GetAddress(true);
|
lslMessage = new Email();
|
||||||
lslMessage.subject = messages[0].Subject;
|
lslMessage.time = lastMessage.Date.ToUnixTimeSeconds().ToString();
|
||||||
|
lslMessage.message = lastMessage.Body.ToString();
|
||||||
m_messages.Remove(messages[0]);
|
lslMessage.sender = lastMessage.Sender.GetAddress(true);
|
||||||
|
lslMessage.subject = lastMessage.Subject;
|
||||||
|
|
||||||
lslMessage.numLeft = messages.Count - 1;
|
lslMessage.numLeft = messages.Count - 1;
|
||||||
return lslMessage;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
if(lastMessage != null)
|
||||||
|
m_messages.Remove(lastMessage);
|
||||||
|
|
||||||
|
return lslMessage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue