Bifogad fil vid mail blir ibland 60 byte

.NET

3 svar · 521 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Trådstart#1

Hej

Ibland så fungerar inte det pdf dokument som ska bifogas ett mail. Det kommer fram en pdf men den är korrupt och på endast 60 byte.

Kör följande kod

public static bool SendMail(string from, string to, string subject, string body, Stream attachment, string filename)
    {
        try
        {
            MailMessage mail = new MailMessage(from, to);

            Attachment attachm = new Attachment(attachment, filename);
            if (filename.Contains(".pdf"))
            {
                attachm.ContentType = new System.Net.Mime.ContentType("application/pdf");
                //attachm.TransferEncoding =  System.Net.Mime.TransferEncoding.

            }

            mail.Attachments.Add(attachm);
            mail.Body = body;
            mail.IsBodyHtml = false;
            mail.Subject = subject;
            SmtpClient smtp = new SmtpClient();
            
            if (ConfigurationManager.AppSettings["SendUsingPickUpFolder"].ToLower() == "true" && Functions.FixIntZero(HttpContext.Current.Request.ServerVariables["SERVER_PORT"]) < 1000)
            {
                smtp.PickupDirectoryLocation = ConfigurationManager.AppSettings["PickUpFolder"].ToString();
                smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
            }
            else
            {
                smtp.UseDefaultCredentials = false;
                smtp.Host = ConfigurationManager.AppSettings["SMTPServer"].ToString();
                smtp.EnableSsl = false;
                smtp.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["SMTPUsernamer"].ToString(), ConfigurationManager.AppSettings["SMTPPassword"].ToString());
                smtp.Port = Functions.FixIntZero(ConfigurationManager.AppSettings["SMTPPort"].ToString());
                smtp.Timeout = 90;                
            }
            smtp.Send(mail);
        }
        catch
        {
            return false;
        }
        return true;
    }
Medlem sedan jan. 20022 440 inlägg
#2

Den metoden verkar inte vara så mycket fel på, frågan är vad som händer när pdf'n skapas eller hämtas?

Medlem sedan jan. 20013 406 inlägg
#3

PDF sparas på även på hårddisken och där ser den okej ut.

Medlem sedan jan. 20022 440 inlägg
#4

två saker att kontrollera då.. Jag vet inte hur det är med Stream, själv har jag kört med memorystream och det fungerar jättebra.

nummer två blir då. Du kör ju en if sats på filnamnet. Är du säker på att filnamnet alltid är ok? Eller kan det vara så att det missas på eller aldrig körs så att filattributen inte tilldelas pdf? Då skulle du få en korrupt fil. Jag skulle nog välja att skicka med det som en valfri parameter eller kanske till och med ha en metod som returnerar en attachment och en metod som returnerar en attachment för pdf. Jag är inte förtjust i det upplägget som du har där med en ifsats som ska sätta attribut på mailattachment. Det känns som upplagt för strul.

250 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)