webForumDet fria alternativet

Bifogad fil vid mail blir ibland 60 byte

.NET

3 svar · 507 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#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.

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)