Конвертировать vb.net в C # в задаче скрипта SSIS - PullRequest
1 голос
/ 04 апреля 2011

Я хочу преобразовать следующий скрипт vb.net в скрипт C # .net в задаче «Сценарий служб SSIS».Я пытался конвертировать с помощью Developer Fusion, но я получаю много ошибок. Может кто-нибудь мне помочь. Мой скрипт Vb.net:

    Public Sub GetAttachments()
        Dim myolApp As Outlook.Application
        Dim ns As Outlook.NameSpace
        Dim Inbox As MAPIFolder
        Dim Item As Object
        Dim Atmt As Attachment
        Dim FileName As String
        Dim subject As String
        Dim AttachmentName As String
        Dim Body As String
        Dim SenderName As String
        Dim SenderEmailAddress As String
        Dim CreationTime As String

        Dim i As Integer
        Dim j As Integer
        On Error GoTo GetAttachments_err
        myolApp = CreateObject("Outlook.Application")
        ns = myolApp.GetNamespace("MAPI")
        ns.Logon("", "", False, True)
        Inbox = ns.Folders("Mailbox - name").Folders("Inbox")
        i = 0
        j = 1

       'Scan for attachments
        For Each Item In Inbox.Items() 
            System.Windows.Forms.Application.DoEvents()
            If (Item.UnRead) Then

                MessageBox.Show(j, "EMail Number")
                subject = DirectCast(Item, Microsoft.Office.Interop.Outlook.MailItem).Subject
                MessageBox.Show(subject, "E-Mail Subject")
                AttachmentName = DirectCast(Item, Microsoft.Office.Interop.Outlook.MailItem).Attachments(1).FileName
                Body = DirectCast(Item, Microsoft.Office.Interop.Outlook.MailItem).Body
                SenderEmailAddress = DirectCast(Item, Microsoft.Office.Interop.Outlook.MailItem).SenderEmailAddress
                SenderName = DirectCast(Item, Microsoft.Office.Interop.Outlook.MailItem).SenderName
                CreationTime = DirectCast(Item, Microsoft.Office.Interop.Outlook.MailItem).CreationTime.ToString()
                MessageBox.Show(AttachmentName, "Attachment Name")
                MessageBox.Show(Body, "Body")
                MessageBox.Show(SenderEmailAddress, "From Address")
                MessageBox.Show(SenderName, "From")
                MessageBox.Show(CreationTime, "Created Time")
                j = j + 1
                If (SenderEmailAddress.ToLower = "lch@gmail.com".ToLower) Then
                    MessageBox.Show("reading from")
                    For Each Atmt In Item.Attachments
                        FileName = "C:\Email Attachments\" & Atmt.FileName
                        Atmt.SaveAsFile(FileName)
                        i = i + 1
                        Item.UnRead = True
                    Next Atmt
                End If
            End If
        Next Item

        'Display summary
        If i > 0 Then
            MsgBox("I found " & i & " attached files." _
               & vbCrLf & "I have saved them into the C:\Email Attachments folder." _
               & vbCrLf & vbCrLf & "Have a nice day.", vbInformation, "Finished!")
        Else
            MsgBox("I didn't find any attached files in your mail.", vbInformation, _
            "Finished!")
        End If

        'Clear Memory
GetAttachments_exit:
        Atmt = Nothing
        Item = Nothing
        ns = Nothing
        Exit Sub

        'Error Handler
GetAttachments_err:
        MsgBox("An unexpected error has occurred." _
           & vbCrLf & "Please note and report the following information." _
           & vbCrLf & "Script Name: GetAttachments" _
           & vbCrLf & "Error Number: " & Err.Number _
           & vbCrLf & "Error Description: " & Err.Description _
           & vbCrLf & "Error Line: " & Err.Source _
           , vbCritical, "Error!")
        Resume GetAttachments_exit
        'End If

    End Sub

1 Ответ

2 голосов
/ 04 апреля 2011

Добавить ссылку на Microsoft.VisualBasic

добавить с помощью операторов:

using Microsoft.Office.Interop.Outlook;
using Microsoft.VisualBasic;

 public void GetAttachments()
{
Microsoft.Office.Interop.Outlook.Application myolApp = default(Microsoft.Office.Interop.Outlook.Application);
Microsoft.Office.Interop.Outlook.NameSpace ns = default(NameSpace);
MAPIFolder Inbox = default(MAPIFolder);
object Item = null;
Attachment Atmt = default(Attachment);
string FileName = null;
string subject = null;
string AttachmentName = null;
string Body = null;
string SenderName = null;
string SenderEmailAddress = null;
string CreationTime = null;

int i = 0;
int j = 0;
try
{

    myolApp = (Microsoft.Office.Interop.Outlook.Application)Interaction.CreateObject("Outlook.Application","");
    ns = myolApp.GetNamespace("MAPI");
    ns.Logon("", "", false, true);
    Inbox = ns.Folders["Mailbox - name"].Folders["Inbox"];
    i = 0;
    j = 1;

    //Scan for attachments
    foreach (object Item_loopVariable in Inbox.Items) {
        Item = Item_loopVariable;
        System.Windows.Forms.Application.DoEvents();

        if ((Item as MailItem) != null ? ((MailItem)Item).UnRead : false) {
            MessageBox.Show(j.ToString(), "EMail Number");
            subject = ((Microsoft.Office.Interop.Outlook.MailItem)Item).Subject;
            MessageBox.Show(subject, "E-Mail Subject");
            AttachmentName = ((Microsoft.Office.Interop.Outlook.MailItem)Item).Attachments[1].FileName;
            Body = ((Microsoft.Office.Interop.Outlook.MailItem)Item).Body;
            SenderEmailAddress = ((Microsoft.Office.Interop.Outlook.MailItem)Item).SenderEmailAddress;
            SenderName = ((Microsoft.Office.Interop.Outlook.MailItem)Item).SenderName;
            CreationTime = ((Microsoft.Office.Interop.Outlook.MailItem)Item).CreationTime.ToString();
            MessageBox.Show(AttachmentName, "Attachment Name");
            MessageBox.Show(Body, "Body");
            MessageBox.Show(SenderEmailAddress, "From Address");
            MessageBox.Show(SenderName, "From");
            MessageBox.Show(CreationTime, "Created Time");
            j = j + 1;
            if ((SenderEmailAddress.ToLower() == "lch@gmail.com".ToLower())) {
                MessageBox.Show("reading from");
                foreach (Attachment att in ((MailItem)Item).Attachments ) {
                    FileName = "C:\\Email Attachments\\" + att.FileName;
                    att.SaveAsFile(FileName);
                    i = i + 1;
                    ((MailItem)Item).UnRead = true;
                }
            }
        }
    }

    //Display summary
    if (i > 0) {
        MessageBox.Show("I found " + i + " attached files." + "\r\n" + "I have saved them into the C:\\Email Attachments folder." + "\r\n" + "\r\n" + "Have a nice day.", "Finished!");
    } else {
        MessageBox.Show("I didn't find any attached files in your mail.", "Finished!");
    }

        //Clear Memory
        Atmt = null;
        Item = null;
        ns = null;

}
catch (System.Exception ex)
{
        MessageBox.Show("An unexpected error has occurred." 
       + "\r\n" + "Please note and report the following information."
       + "\r\n" + "Script Name: GetAttachments"
       + "\r\n" + "Error Description: " + ex.Message
       + "\r\n" + "Error StackTrace: " + ex.StackTrace
       , "Error!");
        Atmt = null;
        Item = null;
        ns = null;
}
}

Попробуйте и дайте мне знать, я немного изменил детали исключения, поэтому дайте мне знать, если вы хотите изменить что-то еще. Кроме того, я удалил оператор goto и заменил его попыткой catch.

...