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
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 Stream
a. 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.
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ć?
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.
Czyli zamiast zapisać zdjęcie na dysku lepiej przechować go w memorystream i z tego wysłać na email?
Nie memorystream tylko w temp, tak?
Tak, tyle, że to też na dysku, ale w przeznaczonym przez system dla tego folderze.
Więc będę czytał jak to zrobić, bardzo dziękuje
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?
Tak, tylko pamiętaj o usuwaniu plików tymczasowych jak już nie będą Ci w aplikacji potrzebne.
Dzieje mi się coś takiego, że nie zawsze przyjdzie email od kolegi. Jaka może być tego przyczyna?
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.
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 ;/
Pewnie Twój, może nie zamykasz pliku po jego wysłaniu?
Teraz chyba działa na dobre, użyłem funkcji dispose() i raczej mi usuwa. Bardzo dziękuje za pomoc !