Wysyłanie screen shota na email bez zapisu

0

Cześć.Da się przesłać na e-mail zdjęcie zrobione przez skrypt screen capture, które zapisze się w pictureboxie?, bez zapisywania tego zdjęcia na dysku. Jeżeli tego nie pójdzie zrobić to drugie pytanie jest następujące : W jaki sposób można zapisać plik za pomocą savefiledialog bez otwierania okna dialogowego. Program ma zapisać obrazek na podaną ścieżkę i podany format. Pozdrawiam

1

Przecież pliku nie zapisuje się w savedialogu, tylko przez PictureBox.Image.Save().
SaveDialog tylko i wyłącznie pozwala użytkownikowi na wybranie nazwy i ścieżki pliku do zapisu. Nie przeprowadza operacji zapisu.

Do wysyłania maila jest klasa System.Net.Mail.MailMessage. Poszukaj przykładów. Obrazek dołączasz jako załącznik.

Jedna z wersji metody Image.Save zapisuje do Streama. U ciebie to powinno być MemoryStream żeby trzymać w RAM-ie.
Jeden z konstruktorów klasy MailMessage przyjmuje jako parametr strumień zamiast nazwy pliku.
W ten sposób powinno się dać uniknąć zapisu na dysk.

Inny sposób to przez zapis do pliku w katalogu TEMP. Metoda Path.GetTempFileName() tworzy pusty plik w tym katalogu (o którego nazwę i lokalizację nie musisz się martwić) i zwraca ścieżkę do tego pliku. Skasuj plik po dokonaniu operacji.

Program ma zapisać obrazek na podaną ścieżkę i podany format.
A podobno ma wysłać plik e-mailem bez zapisu na dysk. Zdecyduj się o co pytasz.

0

Bardzo dziękuje za pomoc, udało dodać do załącznika i wysłać zdjęcie, lecz mam problem, niekiedy wyskakuje mi taki błąd

 A generic error occurred in GDI+.

, Wie ktoś dlaczego on wyskakuje?, odnosi się do tego kodu pictureBox1.Image.Save(@"C:\cze.jpg");


I mam drugi problem, gdy chcę wysłać coś takiego koledze, który ma win 7. To nie robi mu zdjęcia na kompie a także nie wysyła mi zdjęcia na poczte. Można to jakoś naprawić?
1

Zdajesz sobie sprawę, że żeby pisać po dysku C: mogą być potrzebne uprawnienia administratora. Azarien napisał Ci jak tworzyć plik tymczasowy. Za robienie tego tak jak Ty to robisz powinni ucinać łapki przy samej miednicy :p

Żeby się dowiedzieć co jest nie tak przechwytuj odpowiednie wyjątki i wyświetlaj komunikaty o błędach, bo pewnie je ignorujesz.

0

Czyli zamiast zapisać zdjęcie na dysku lepiej przechować go w memorystream i z tego wysłać na email?

0

Nie memorystream tylko w temp, tak?

1

Tak, tyle, że to też na dysku, ale w przeznaczonym przez system dla tego folderze.

0

Więc będę czytał jak to zrobić, bardzo dziękuje

0

A więc udało mi się zrobić plik tymczasowy, w tym pliku zapisuję obraz, dodaje ten plik do załącznika po czym otwieram go za pomocą przeglądarki i wychodzi zdjęcie. Czy plik tymczasowy będzie normalnie zapisywany na innym komputerze?

0

Tak, tylko pamiętaj o usuwaniu plików tymczasowych jak już nie będą Ci w aplikacji potrzebne.

0

Dzieje mi się coś takiego, że nie zawsze przyjdzie email od kolegi. Jaka może być tego przyczyna?

0

Może ląduje u Ciebie jako spam? Może jakiś błąd się pojawia? Może leci wyjątek? Może kolega ma problemy z netem? Może firewall coś szaleje? Może? Może? Powodów mogą być dziesiątki.

0

Właśnie nie wiem jaki może być problem, postaram się to sprawdzić. A możesz mi powiedzieć jak mogę usunąć proces od pliku tymczasowego?, po wysłaniu go pocztą nie mogę go usunąć ponieważ jest używany przez inny proces i nie wiem przez jaki ;/

0

Pewnie Twój, może nie zamykasz pliku po jego wysłaniu?

1

Teraz chyba działa na dobre, użyłem funkcji dispose() i raczej mi usuwa. Bardzo dziękuje za pomoc !

1 użytkowników online, w tym zalogowanych: 0, gości: 1