Skocz do zawartości
  • Zarejestruj się
  • 0
xmarcinx

Upgrade 4.3.6 -> 4.4.x

Pytanie

Cześć. Od niedawna administruję forum i mam być może naiwne pytanie. Czy upgrade z 4.3.6 na 4.4.0 będzie "oferowane" przez ACP? Po zalogowaniu się do Client Area widzę, że można pobrać 4.4.0, które oznaczone jest jest jako Current stable.Zakładam więc, że to wydanie oficjalne. Na moim forum w ACP, po Check Update nie mam żadnego komunikatu.

Pozdro

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

18 odpowiedzi na to pytanie

Polecane posty

  • 0

Witam,
na tą chwilę nie wiem. Ktoś pytał na forum IPS'u ale nie padła odpowiedź. Ogólnie jak chcesz już zaktualizować to pobierz i wgraj. Ale ja doradzam poczekać po 1. na spolszczenie a po 2. na wersję 4.4.1, żeby poprawili znalezione błędy

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

A czy ten upgrade wpłynie na zmiany poczynione w szablonach baz danych oraz na style i szablony skórek ? Podejrzewam, że style jak i szablony skórek pozostaną niezmienione, ale jak ma się sprawa z szablonami baz danych? Mam tam sporo swoich "rzeczy" i obawiam się, że po upgradzie wszystko się sypnie. 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Upgrade nic nie tknie. Ani szablonu ani ani nic. Inną kwestią jest to, czy to co zmieniłeś będzie kompatybilne z nową wersją. Ale sam szablon nie będzie zmieniony

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Puściłem upgrade na klonie naszego forum. Wszystko wydaje się działać z wyjątkiem tego, że po wejściu w jakiś konkretny artykuł ( nasz IPContent ) wywala taki błąd.

Czym to może być spowodowane ? 

 

Zrzut ekranu z 2019-03-06 09-35-42.png

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Zmianami w szablonie. Masz źle osadzony kod do wyświetlania przycisku follow. Przedtem miałeś coś takiego:

{template="follow" app="core" group="global" params="'cms', 'records'.$record::$customDatabaseId, $record->primary_id_field, $record->followers()->count( TRUE )"}

natomiast w 4.4 ma być tak

{template="follow" app="core" group="global" params="'cms', 'records'.$record::$customDatabaseId, $record->primary_id_field, $record->followersCount()"}

 

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Faktycznie, poprawiłem i wstało. Tylko, że to nie była moja zmiana 😕 . Dlaczego IPB nie podmienił tego automatycznie podczas aktualizacji ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Na produkcji wywaliło błąd

Error: Call to a member function url() on boolean (0)
#0 /home/www/prod.audiostereo.pl/www/applications/cms/modules/front/database/record.php(310): IPS\Theme\class_cms_database_display->record(Object(IPS\cms\Records30), '\n<div data-cont...', NULL, true)
#1 /home/www/prod.audiostereo.pl/www/system/Dispatcher/Controller.php(96): IPS\cms\modules\front\database\_record->manage()
#2 /home/www/prod.audiostereo.pl/www/system/Content/Controller.php(50): IPS\Dispatcher\_Controller->execute()
#3 /home/www/prod.audiostereo.pl/www/applications/cms/sources/Databases/Dispatcher.php(347): IPS\Content\_Controller->execute()
#4 /home/www/prod.audiostereo.pl/www/system/Theme/Theme.php(4309) : eval()'d code(39): IPS\cms\Databases\_Dispatcher->run()
#5 /home/www/prod.audiostereo.pl/www/applications/cms/sources/Pages/Page.php(1242): IPS\Theme\content_pages_55()
#6 /home/www/prod.audiostereo.pl/www/applications/cms/sources/Pages/Page.php(2217): IPS\cms\Pages\_Page->getHtmlContent()
#7 /home/www/prod.audiostereo.pl/www/applications/cms/modules/front/pages/page.php(112): IPS\cms\Pages\_Page->output()
#8 /home/www/prod.audiostereo.pl/www/applications/cms/modules/front/pages/page.php(43): IPS\cms\modules\front\pages\_page->view()
#9 /home/www/prod.audiostereo.pl/www/system/Dispatcher/Controller.php(96): IPS\cms\modules\front\pages\_page->manage()
#10 /home/www/prod.audiostereo.pl/www/applications/cms/modules/front/pages/page.php(33): IPS\Dispatcher\_Controller->execute()
#11 /home/www/prod.audiostereo.pl/www/system/Dispatcher/Dispatcher.php(152): IPS\cms\modules\front\pages\_page->execute()
#12 /home/www/prod.audiostereo.pl/www/index.php(13): IPS\_Dispatcher->run()
#13 {main}

 

Coś się czepia do funkcji url(), mam w kodzie coś takiego : \IPS\Request::i()->url() . 

To do tego się czepia ? Można to zastąpić jakoś ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Niekoniecznie. Jakaś zmienna na której robisz ->url() jest typu boolean czyli true/false a nie obiektem

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ale to jest tylko moja jedyna zmiana. Reszta to od IPB np : <a href='{$record->url()->csrf()->setQueryString( ,  href="{$record->container()->url()}"  😕 

Mógłbyś u siebie spojrzeć jak masz napisany kod z tymi $record->url() ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ja mam tak:

<ips:template parameters="$record, $commentsAndReviews, $updateForm=NULL, $nextUnread=NULL" />
<div class='ipsPageHeader ipsClearfix'>
	
	<div class='ipsPos_right ipsResponsive_noFloat ipsResponsive_hidePhone'>
		{template="follow" app="core" group="global" params="'cms', 'records'.$record::$customDatabaseId, $record->primary_id_field, $record->followersCount()"}
	</div>
	<div class='ipsPos_right ipsResponsive_noFloat ipsResponsive_hidePhone'>
		{template="promote" app="core" group="global" params="$record"}
	</div>
	<h1 class='ipsType_pageTitle ipsContained_container'>
		{{if $record->locked()}}<span><i class='fa fa-lock'></i></span> {{endif}}

		{{if $record->isFutureDate() || $record->mapped('pinned') || $record->mapped('featured') || $record->hidden() === -1 || $record->hidden() === 1 || $record->hidden() === -2}}
			{{if $record->isFutureDate()}}
				<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$record->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span>
			{{elseif $record->hidden() === -1}}
				<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$record->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
			{{elseif $record->hidden() === -2}}
				<span><span class="ipsbadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$record->deletedBlurb()}'><i class='fa fa-trash'></i></span></span>
			{{elseif $record->hidden() === 1}}
				<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
			{{endif}}
			{{if $record->mapped('pinned')}}
				<span><span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
			{{endif}}
			{{if $record->mapped('featured')}}
				<span><span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
			{{endif}}
		{{endif}}
		
		{{if $record->prefix() OR ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) AND $record::canPrefix( NULL, $record->container() ) )}}
			<span {{if !$record->prefix()}}class='ipsHide'{{endif}} {{if ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) AND $record::canPrefix( NULL, $record->container() ) )}}data-editablePrefix{{endif}}>
				{template="prefix" group="global" app="core" params="$record->prefix( TRUE ), $record->prefix()"}
			</span>
		{{endif}}
		{{if $record->canEditTitle()}}
			<span class='ipsType_break ipsContained' data-controller="core.front.core.moderation">
				<span data-role="editableTitle" title='{lang="click_hold_edit"}'>{$record->_title}</span>
			</span>
		{{else}}
			<span class='ipsType_break ipsContained'>{$record->_title}</span>
		{{endif}}
	</h1>
	
	{{if $record::database()->options['reviews']}}
		<div>
			{template="rating" group="global" location="front" app="core" params="'large', $record->averageReviewRating(), \IPS\Settings::i()->reviews_rating_out_of, $record->memberReviewRating()"}&nbsp;&nbsp; <span class='ipsType_normal ipsType_light'>({lang="num_reviews" pluralize="$record->record_reviews"})</span>
		</div>
	{{elseif $record->container()->allow_rating}}
		<div>{$record->rating()|raw}</div>
	{{endif}}	
</div>

<hr class='ipsHr'>

<div class='ipsBox_alt ipsPhotoPanel ipsPhotoPanel_tiny ipsClearfix ipsSpacer_bottom'>
	{template="userPhoto" app="core" group="global" params="$record->author(), 'tiny', $record->warningRef()"}
	<div>
		<p class='ipsType_reset ipsType_large ipsType_blendLinks'>
			{lang="content_record_started_by" htmlsprintf="$record->author()->link()"}
			{{if $record->editLine()}}
				<span class='ipsType_light ipsType_medium ipsType_reset'>
					({lang="edited_lc"})
				</span>
			{{endif}}
		</p>
		<ul class='ipsList_inline'>
			<li>{datetime="$record->record_publish_date"}</li>
			{{foreach $record->customFieldsForDisplay('display_top') as $fieldId => $fieldValue}}
				{{if $fieldValue}}
					{$fieldValue|raw}
				{{endif}}
			{{endforeach}}
		</ul>
	</div>
</div>	

{{if \count( $record->tags() ) OR ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) )}}
	{template="tags" group="global" app="core" params="$record->tags(), FALSE, FALSE, ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) ) ? $record->url() : NULL"}
{{endif}}	

{{if \count($record->getMessages())}}
	<div class='ipsSpacer ipsSpacer_top'>
		{template="contentItemMessages" group="global" app="core" params="$record->getMessages(), $record"}
	</div>
{{endif}}

<article class='ipsContained ipsSpacer_top ipsBox ipsPad'>
	<div class='ipsClearfix'>
		{{if $record->record_image}}
			<div class="cCmsRecord_image">
				<img class="ipsImage" src="{file="$record->_record_image_thumb" extension="cms_Records"}">
			</div>
		{{endif}}
		<section class="ipsType_richText ipsType_normal" data-controller='core.front.core.lightboxedImages'>{$record->_content|raw}</section>
		
		{{if $record->editLine()}}
			{$record->editLine()|raw}
		{{endif}}
		
		{{if $records = $record->getReciprocalItems()}}
			<br>
			{{foreach $records as $fieldId => $items}}
				{{$infoLineShown = FALSE;}}
				<ul class="ipsList_inline ipsList_csv ipsList_noSpacing">
				{{foreach $items as $item}}
					<li>{{if ! $infoLineShown}}{{$infoLineShown=TRUE;}}{lang="records_linking_to_me" sprintf="$item::database()->recordWord(0,TRUE), $record::database()->recordWord(1)"}: {{endif}}<a href="{$item->url()}">{$item->_title}</a></li>
				{{endforeach}}
				</ul>
			{{endforeach}}
		{{endif}}
	</div>
	{{if $bottomFields = $record->customFieldsForDisplay('display_bottom')}}
		<hr class='ipsHr ipsClear ipsClearfix'>
		{{foreach $bottomFields as $fieldId => $fieldValue}}
			{{if $fieldValue}}
				{$fieldValue|raw}
			{{endif}}
		{{endforeach}}
	{{endif}}
	
	<div class='ipsItemControls'>
		{{if \IPS\IPS::classUsesTrait( $record, 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
			{template="reputation" app="core" group="global" params="$record"}
		{{endif}}
		<ul class='ipsToolList ipsToolList_horizontal ipsPos_left ipsClearfix ipsResponsive_noFloat ipsItemControls_left'>
			{{if ( $record->isFutureDate() or $record->canPin() or $record->canUnpin() or $record->canFeature() or $record->canUnfeature() or $record->canHide() or $record->canUnhide() or $record->canMove() or $record->canLock() or $record->canUnlock() or $record->canDelete() ) or ( $record->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content'))}}
				<li>
					<a href='#elentryActions_menu' id='elentryActions' class='ipsButton ipsButton_light ipsButton_verySmall ipsButton_fullWidth' data-ipsMenu>{lang="content_record_actions" sprintf="$record::database()->recordWord( 1, TRUE )"} <i class='fa fa-caret-down'></i></a>
					<ul id='elentryActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
						{{if \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $record->hidden() == -2}}
							<li class='ipsMenu_item'><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restore' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_visible_desc"}'>{lang="restore_as_visible"}</a></li>
							<li class='ipsMenu_item'><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restoreAsHidden' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_hidden_desc"}'>{lang="restore_as_hidden"}</a></li>
							<li class='ipsMenu_item'><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete', 'immediate' => 1 ) )}' data-confirm data-confirmSubMessage='{lang="delete_immediately_desc"}'>{lang="delete_immediately"}</a></li>
						{{else}}
							{{if $record->isFutureDate() and $record::canFuturePublish( NULL, $record->container() )}}
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'publish' ) )}' data-confirm title='{lang="publish_now"}'>{lang="publish"}</a></li>
							{{endif}}
							{{if $record->canFeature()}}
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'feature' ) )}' title='{lang="feature_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="feature"}</a></li>
							{{endif}}
							{{if $record->canUnfeature()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unfeature' ) )}' title='{lang="unfeature_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="unfeature"}</a></li>
							{{endif}}
							{{if $record->canPin()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'pin' ) )}' title='{lang="pin_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="pin"}</a></li>
							{{endif}}
							{{if $record->canUnpin()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unpin' ) )}' title='{lang="unpin_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="unpin"}</a></li>
							{{endif}}
							{{if $record->canHide()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'hide' ) )}' title='{lang="hide_title_record" sprintf="$record::database()->recordWord(1)"}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
							{{endif}}
							{{if $record->canUnhide()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unhide' ) )}' title='{{if $record->hidden() === 1}}{lang="approve_title_record" sprintf="$record::database()->recordWord(1)"}{{else}}{lang="unhide_title_record" sprintf="$record::database()->recordWord(1)"}{{endif}}'>{{if $record->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
							{{endif}}
							{{if $record->canLock()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'lock' ) )}' title='{lang="lock_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="lock"}</a></li>
							{{endif}}
							{{if $record->canUnlock()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unlock' ) )}' title='{lang="unlock_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="unlock"}</a></li>
							{{endif}}
							{{if $record->canMove()}}				
								<li class='ipsMenu_item'><a href='{$record->url('move')->csrf()}' data-ipsDialog data-ipsDialog-title="{lang="move"}"  title='{lang="move_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="move"}</a></li>
							{{endif}}
							{{if $record->canDelete()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'delete' ) )}' data-confirm  title='{lang="delete_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="delete"}</a></li>
							{{endif}}
							{{if $record->canOnMessage( 'add' )}}
								<li class='ipsMenu_item'><a href='{$record->url('messageForm')->csrf()}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
							{{endif}}
							{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
								<li class='ipsMenu_sep'><hr></li>
								<li class="ipsMenu_item"><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
							{{endif}}
						{{endif}}
					</ul>
				</li>
			{{endif}}
			{{if $record->canEdit()}}
				<li><a href='{$record->url('edit')}' title='{lang="edit"}' class='ipsButton ipsButton_verySmall ipsButton_link ipsButton_fullWidth'>{lang="edit"}</a></li>
			{{endif}}
			{{if $record->canReportOrRevoke() === TRUE}}
				<li><a href='{$record->url('report')}' class='ipsButton ipsButton_verySmall ipsButton_link ipsButton_fullWidth' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}">{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}</a></li>
			{{endif}}
			{{if $record->canManageRevisions()}}
				<li><a href='{$record->url('revisions')}' class='ipsButton ipsButton_verySmall ipsButton_link ipsButton_fullWidth' title="{lang="content_view_revisions"}">{lang="content_view_revisions"}</a></li>
			{{endif}}
		</ul>
	</div>
</article>

<div class='ipsResponsive_showPhone ipsResponsive_block ipsSpacer_top'>
	{template="follow" app="core" group="global" params="'cms', 'records'.$record::$customDatabaseId, $record->primary_id_field, $record->followersCount()"}
</div>
<div class='ipsResponsive_showPhone ipsResponsive_block ipsSpacer_top'>
	{template="promote" app="core" group="global" params="$record"}
</div>

<div class='ipsGrid ipsGrid_collapsePhone ipsPager ipsClearfix ipsSpacer_top'>
	<div class="ipsGrid_span6 ipsType_left ipsPager_prev ipsPager_noDesc">
		{{if $record::database()->use_categories}}
			<a href="{$record->container()->url()}" title="{lang="cms_back_to_category_with_title" sprintf="$record->container()->_title"}" rel="up">
				<span class="ipsPager_type">{lang="cms_back_to_category" sprintf="$record::database()->recordWord( 2 )"}</span>
			</a>
		{{else}}
			{{$page = \IPS\cms\Pages\Page::$currentPage;}}
			<a href="{$page->url()}" title="{lang="cms_back_to_category_with_title" sprintf="$page->_title"}" rel="up">
				<span class="ipsPager_type">{lang="cms_back_to_category" sprintf="$record::database()->recordWord( 2 )"}</span>
			</a>
		{{endif}}
	</div>
	{{if $nextUnread !== NULL}}
		<div class='ipsGrid_span6 ipsType_right ipsPager_next ipsPager_noDesc'>
			<a href="{$record->url()->setQueryString( array( 'do' => 'nextUnread' ) )}" title='{lang="cms_view_next_unread_title" sprintf="$record::database()->recordWord( 1 )"}'>
				<span class="ipsPager_type">{lang="cms_next_unread_title" sprintf="$record::database()->recordWord( 1 )"}</span>
			</a>
		</div>
	{{endif}}
</div>

{{if !$record->container()->disable_sharelinks}}
	<hr class='ipsHr'>
	{template="sharelinks" app="core" group="global" params="$record"}
{{endif}}

<br>
{{if $commentsAndReviews}}
	<a id="replies"></a>
	<h2 class='ipsHide'>{lang="user_feedback"}</h2>
	{$commentsAndReviews|raw}
{{endif}}

<br>
{{if $updateForm}}
	<div class='ipsAreaBackground_light ipsPad'>
		<h2 class='ipsType_sectionHead'>{lang="cms_front_update_fields" sprintf="$record::database()->recordWord( 1 )"}</h2>
		<ul class='ipsForm ipsForm_vertical'>
			{$updateForm|raw}
		</ul>
	</div>
{{endif}}

 

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

W Client Area widzę, że 4.4.1 jest Current Stable. Będę podnosił u siebie za kilka dni. @Spanner a ty kiedy wersję forum podniesiesz?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@xmarcinx 2 dni temu podniosłem 😛 nawet na FB o tym był news połączony z opublikowaniem nowej wersji tłumaczenia

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

A to super. Tak czułem. W takim razie w przyszłym tygodniu siądę do tego. Będę robił manualny upgrade, zgodnie z tym przepisem. Wcześniej tego nie robiłem, ale zakładam, że to jest proste i standardowe.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
5 minut temu, xmarcinx napisał:

Wcześniej tego nie robiłem, ale zakładam, że to jest proste i standardowe.

Jak dla mnie tak 🙂

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Upgrejdzik zrobiony bez problemu. Zajmuję się tym forum od 3 miesięcy i muszę powiedzieć, że jest to naprawdę bardzo dobry kawał produktu.

Ciekawi mnie czy nowa funkcja pokazująca statystyki maili będzie zgodna z tym, co ostatnio zaobserwowałem na SendGrid, z którego korzystałem testowo przez miesiąc. Forum wysłało przez miesiąc osiemnaście tysięcy maili. Byłem tym zaskoczony. Będę mógł porównać.

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dołącz do rozmowy

Możesz pisać i zarejestrować się później. Jeśli masz konto,Zaloguj się teraz, aby publikować na swoim koncie.

Gość
Odpowiedz na pytanie...

×   Wklejony jako tekst z formatowaniem.   Wklej jako zwykły tekst

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×
×
  • Utwórz nowe...

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.