Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

ModeSix posted:

I need some help with displaying different content in different view sizes, and I believe it's not something I can do with media queries via css.

I'm using Angular 1.5.x + Angular-Bootstrap + some modules from AngularStrap.

I am using a dropdown in my navbar and it works great for a desktop presentation, however on mobile I need to change the dropdown to a different format.

Right now I'm trying to gently caress it through DOM manipulation as so:

code:
dssapp.directive('browseContent', function($window) {
    return {
        restrict: 'E',
        template: '<div ng-include="templateUrl"></div>',
        link: function(scope) {
            $window.onresize = function() {
                changeDropDown();
                scope.$apply;
            };
            changeDropDown();
            
            function changeDropDown() {
                var screenWidth = $window.innerWidth;
                
                if (screenWidth < 768 ) {
                    scope.templateUrl = 'views/header.mobile.html';
                };
		if (screenWidth >= 769 ) {
                    scope.templateUrl = 'views/header.normal.html';
                };
            }
        }
    }
});
This works great when I am switching from desktop to mobile size, however I feel it's really inefficient because it does about a dozen checks while resizing the window.

Another problem I am having is that when I switch back to Desktop size it doesn't replace the changed content back to desktop version, it leaves the mobile data in the DOM until I click on something then it switches.

Additionally there's a delay of 1-2 seconds to actually switch the template.

Advice is seriously welcome how I can do this.

Is there a way I could accomplish this via ui.router or another way that seems less hackish?

Edit: Yes I know I'm not using Typescript. Still learning that. I'd be happy if someone showed me in Typescript because I have the transpiler set up for it. :v:

Edit 2: It feels like ui.bootstrap and AngularStrap just add unnecessary complications, but it's the best way right?

Euuugghhhh, I really hate your using ng-include, that just feels so wrong... I suspect much of your issues stem from the order in which your onresize and digest functions end up being called. I would look at Angular Material to do what you want, it has a number of functions for doing responsive designs like you describe.

Adbot
ADBOT LOVES YOU

nah thanks
Jun 18, 2004

Take me out.

Anony Mouse posted:

Yeah rereading his post it seems like that's more what he uses paint.net for. Still, sketch uber alles.

How do you guys recommend learning Sketch? I keep reading amazing things about it, but I never learned anything past the basic Photoshop stuff necessary to cobble together a halfway decent UI.

LifeLynx
Feb 27, 2001

Dang so this is like looking over his shoulder in real-time
Grimey Drawer
I always stuck the latest 1.X branch of jQuery into my custom-made WordPress themes, but now jQuery 3 is out. Should I worry about using that? The slider I usually used, bxslider, doesn't work in jQuery 3, so is it worth it to keep using what works?

consensual poster
Sep 1, 2009

ModeSix posted:

I need some help with displaying different content in different view sizes, and I believe it's not something I can do with media queries via css.

I'm using Angular 1.5.x + Angular-Bootstrap + some modules from AngularStrap.

I am using a dropdown in my navbar and it works great for a desktop presentation, however on mobile I need to change the dropdown to a different format.

Right now I'm trying to gently caress it through DOM manipulation as so:

code:
dssapp.directive('browseContent', function($window) {
    return {
        restrict: 'E',
        template: '<div ng-include="templateUrl"></div>',
        link: function(scope) {
            $window.onresize = function() {
                changeDropDown();
                scope.$apply;
            };
            changeDropDown();
            
            function changeDropDown() {
                var screenWidth = $window.innerWidth;
                
                if (screenWidth < 768 ) {
                    scope.templateUrl = 'views/header.mobile.html';
                };
		if (screenWidth >= 769 ) {
                    scope.templateUrl = 'views/header.normal.html';
                };
            }
        }
    }
});
This works great when I am switching from desktop to mobile size, however I feel it's really inefficient because it does about a dozen checks while resizing the window.

Another problem I am having is that when I switch back to Desktop size it doesn't replace the changed content back to desktop version, it leaves the mobile data in the DOM until I click on something then it switches.

Additionally there's a delay of 1-2 seconds to actually switch the template.

Advice is seriously welcome how I can do this.

Is there a way I could accomplish this via ui.router or another way that seems less hackish?

Edit: Yes I know I'm not using Typescript. Still learning that. I'd be happy if someone showed me in Typescript because I have the transpiler set up for it. :v:

Edit 2: It feels like ui.bootstrap and AngularStrap just add unnecessary complications, but it's the best way right?

Use window.matchMedia to do media query stuff in JavaScript. Also, why aren't you cleaning up your event handler?

code:
dssapp.directive('browseContent', function($window) {
    return {
        restrict: 'E',
        template: '<div ng-include="templateUrl"></div>',
        link: function(scope) {
	    var mql = $window.matchMedia('(max-width: 768px)');

	    mql.addListener(selectTemplate);

	    //For the initial load but without the $digest
            scope.templateUrl = (mql.matches) ? 'views/header.mobile.html' : 'views/header.normal.html';

	    scope.$on('$destroy', function() {
		  mql.removeListener(selectTemplate);
	    });
            
            function selectTemplate(mql) {
                scope.templateUrl = (mql.matches) ? 'views/header.mobile.html' : 'views/header.normal.html';
		scope.$digest();
            }
        }
    }
});

nexus6
Sep 2, 2011

If only you could see what I've seen with your eyes

kedo posted:

To: Client
From: You
Subject: Re: WHY ARE WE GETTING SO MCUH SPAM!!!!1!!`

"Now that we've installed reCAPTCHA on the form you should see significantly less spam. However please be aware that since this is a public form on the internet you will always see a certain amount of spam and there's simply no way around that."



Yeah, we tried that. The client can't accept that as an answer so they just wait a few weeks then complain again to see if the answer has changed. That, or they think we're deliberately lying to them and if they complain often enough maybe they'll catch us out

The Merkinman
Apr 22, 2007

I sell only quality merkins. What is a merkin you ask? Why, it's a wig for your genitals!
Is there some magic incantation I need to do to go Safari on iOS to respect body{overflow-y:hidden}? Mobile Safari is the new IE.

Lumpy
Apr 26, 2002

La! La! La! Laaaa!



College Slice

The Merkinman posted:

Is there some magic incantation I need to do to go Safari on iOS to respect body{overflow-y:hidden}? Mobile Safari is the new IE.

Did you explicitly height the body?

The Merkinman
Apr 22, 2007

I sell only quality merkins. What is a merkin you ask? Why, it's a wig for your genitals!

Lumpy posted:

Did you explicitly height the body?
It's currently this:
code:
html, body {
    height: 100%;
}

FuriousAngle
May 14, 2006

See your face upon the clean water. How dirty! Come! Wash your face!
Hi everybody! Please let me know if this isn't the place to ask.

Skill level: Pretty beginner, I have the basic concepts of HTML 5 and CSS down, with some JS
Project Requirements: Probably CSS and JS


Would anyone mind helping me out? I'd be very grateful! I'd even be happy with a point in the right direction.

I'm looking for a simple, clean way to switch between different sets of text. Ideally I'd like to have a set of radio buttons at the top to let the user switch between three sets of text scattered throughout a page. The way I know how to do it would involve hiding each individual instance of all txtB and txtC while the txtA button is depressed, and that seems like it can get tedious and messy as far as code goes. I feel like there's got to be a better way for me to group everything according to type and use some buttons to toggle which values are shown.

Simple code:

code:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
	<input type="radio" name="edition" value="txtA">Show Text A<br>
	<input type="radio" name="edition" value="txtB">Show Text B<br>
	<input type="radio" name="edition" value="txtC">Show Text C<br>

	<p>Text A.</p>
	<p>Text B.</p>
	<p>Text C.</p>
	<p>Universal Text.</p>
	<p>Text A.</p>	
	<p>Text B.</p>
	<p>Text C.</p>
	<p>Universal Text.</p>

</body>
</html>
Desired output:

Text A./Text B./Text C.
Universal Text
Text A./Text B./Text C.
Universal Text


Any input would be AWESOME.

PT6A
Jan 5, 2006

Public school teachers are callous dictators who won't lift a finger to stop children from peeing in my plane

FuriousAngle posted:

Hi everybody! Please let me know if this isn't the place to ask.

Skill level: Pretty beginner, I have the basic concepts of HTML 5 and CSS down, with some JS
Project Requirements: Probably CSS and JS


Would anyone mind helping me out? I'd be very grateful! I'd even be happy with a point in the right direction.

I'm looking for a simple, clean way to switch between different sets of text. Ideally I'd like to have a set of radio buttons at the top to let the user switch between three sets of text scattered throughout a page. The way I know how to do it would involve hiding each individual instance of all txtB and txtC while the txtA button is depressed, and that seems like it can get tedious and messy as far as code goes. I feel like there's got to be a better way for me to group everything according to type and use some buttons to toggle which values are shown.

Simple code:

code:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
	<input type="radio" name="edition" value="txtA">Show Text A<br>
	<input type="radio" name="edition" value="txtB">Show Text B<br>
	<input type="radio" name="edition" value="txtC">Show Text C<br>

	<p>Text A.</p>
	<p>Text B.</p>
	<p>Text C.</p>
	<p>Universal Text.</p>
	<p>Text A.</p>	
	<p>Text B.</p>
	<p>Text C.</p>
	<p>Universal Text.</p>

</body>
</html>
Desired output:

Text A./Text B./Text C.
Universal Text
Text A./Text B./Text C.
Universal Text


Any input would be AWESOME.

Assign a CSS class to each set of text (let's say "textA" "textB" "textC" to keep things simple). When a radio button is selected, set the two non-active classes to have "display:none" in CSS, and the active class to have "display:block".

Is this enough to get started with or would you like more help?

Depressing Box
Jun 27, 2010

Half-price sideshow.
You could also lean more on CSS and write a style that hides all conditional elements, then show the elements that match the parent class:

CSS code:
.conditional {
  display: none;
}

.show-conditional--a .conditional--a,
.show-conditional--b .conditional--b,
.show-conditional--c .conditional--c {
  display: block;
}
Then just use JS to make the radio buttons toggle the class on a parent element:

code:
<div class="show-conditional--a">
    <p class="conditional conditional--a">Text A.</p>
    <p class="conditional conditional--b">Text B.</p>
    <p class="conditional conditional--c">Text C.</p>
    <p>Universal Text.</p>
    <p class="conditional conditional--a">Text A.</p>   
    <p class="conditional conditional--b">Text B.</p>
    <p class="conditional conditional--c">Text C.</p>
    <p>Universal Text.</p>
</div>

FuriousAngle
May 14, 2006

See your face upon the clean water. How dirty! Come! Wash your face!

PT6A posted:

Assign a CSS class to each set of text (let's say "textA" "textB" "textC" to keep things simple). When a radio button is selected, set the two non-active classes to have "display:none" in CSS, and the active class to have "display:block".

Is this enough to get started with or would you like more help?

That's a great start! Thanks! Let me see if I can do it with that!

FuriousAngle
May 14, 2006

See your face upon the clean water. How dirty! Come! Wash your face!

Depressing Box posted:

You could also lean more on CSS and write a style that hides all conditional elements, then show the elements that match the parent class:

CSS code:
<CODE HERE>
Then just use JS to make the radio buttons toggle the class on a parent element:

code:
<MORE CODE HERE>

So close! I hate to ask for help again so soon but this is driving me nuts. My JS skills aren't quite up to snuff, apparently, and I'm having a hell of a time figuring out the IF statement's syntax (if I should even be using IF statements for what I'm doing).

Here's what I have so far. To simplify I just lumped the CSS in the main code. Can anyone spot what I'm doing wrong?

code:
<!DOCTYPE html>
<html>
    <head>
        <style> 
            .textB {
                display:none;
            }
            
            .textA {
                display:block;
            }            
        </style>
    </head>
    <body>
      
        <input type="radio" name="edition" value="txtA">Show Text A
        <input type="radio" name="edition" value="txtB">Show Text B<br>
    
        <script>
            if (document.edition.txtA.checked == true) {
                .textA {
                    display:block;
                }
                .textB {
                    display: none;
                }
            }
            else if (document.edition.txtB.checked == true) {
                    .textB {
                        display:block;
                    }
                    
                    .textA {
                        display:none;
                    }
                }
        </script>
        
   <p class="textA">Text A.</p>
            <p class="textB">Text B.</p>
            <p>Universal Text.</p>
            <p class="textA">Text A.</p>	
            <p class="textB">Text B.</p>
            <p>Universal Text.</p>

    </body>
</html>

The Fool
Oct 16, 2003


Your code only runs on document load, you need to run it when your radio buttons are clicked.

Depressing Box
Jun 27, 2010

Half-price sideshow.

FuriousAngle posted:

So close! I hate to ask for help again so soon but this is driving me nuts. My JS skills aren't quite up to snuff, apparently, and I'm having a hell of a time figuring out the IF statement's syntax (if I should even be using IF statements for what I'm doing).

Here's what I have so far. To simplify I just lumped the CSS in the main code. Can anyone spot what I'm doing wrong?

code:

[...]
<script>
            if (document.edition.txtA.checked == true) {
                .textA {
                    display:block;
                }
                .textB {
                    display: none;
                }
            }
            else if (document.edition.txtB.checked == true) {
                    .textB {
                        display:block;
                    }
                    
                    .textA {
                        display:none;
                    }
                }
        </script>
[...]

Mixing CSS and JS like that won't actually do anything. I'd recommend reading some introductory JavaScript tutorials to get familiar with how the language is structured (I've found Eloquent Javascript to be pretty straightforward, and it's free).

To your specific question, here's a JSFiddle demonstrating a possible solution, using jQuery since I don't know which browsers you're targeting. Notice how the major sections (controls, text) are grouped under divs with descriptive classes, making them easier to target with your styles and scripts.

Depressing Box fucked around with this message at 05:28 on Jul 12, 2016

ModeSix
Mar 14, 2009

Skandranon posted:

Euuugghhhh, I really hate your using ng-include, that just feels so wrong... I suspect much of your issues stem from the order in which your onresize and digest functions end up being called. I would look at Angular Material to do what you want, it has a number of functions for doing responsive designs like you describe.

Yes I've played with Angular Material in the past and it may be worth slipping into the project for the responsive features alone, I've been messing with it the last couple days and the way it handles screen resizing is fantastic.

I'm sure some of the other components will work very well with what I am doing also.

I'd love to do the whole project using it, but it seems some things are less than intuitive with it, such as an actual navbar, however switching the content based on screen size is dead simple.

Lumpy
Apr 26, 2002

La! La! La! Laaaa!



College Slice

The Merkinman posted:

It's currently this:
code:
html, body {
    height: 100%;
}

100% of what...... :iiam:

Maybe try 100vh instead? Then again, isn't that just what browsers do when the content is bigger than the viewport?

consensual poster
Sep 1, 2009

ModeSix posted:

Yes I've played with Angular Material in the past and it may be worth slipping into the project for the responsive features alone, I've been messing with it the last couple days and the way it handles screen resizing is fantastic.

I'm sure some of the other components will work very well with what I am doing also.

I'd love to do the whole project using it, but it seems some things are less than intuitive with it, such as an actual navbar, however switching the content based on screen size is dead simple.

Did you see the rather simple solution I posted about responding to media query events using window.matchMedia? Angular Material's $mdMedia service uses the same method to respond to media query events.

FuriousAngle
May 14, 2006

See your face upon the clean water. How dirty! Come! Wash your face!

Depressing Box posted:

Mixing CSS and JS like that won't actually do anything. I'd recommend reading some introductory JavaScript tutorials to get familiar with how the language is structured (I've found Eloquent Javascript to be pretty straightforward, and it's free).

To your specific question, here's a JSFiddle demonstrating a possible solution, using jQuery since I don't know which browsers you're targeting. Notice how the major sections (controls, text) are grouped under divs with descriptive classes, making them easier to target with your styles and scripts.

That's great! It's exactly what I want it to do! And you're right, I definitely need to get more familiar with Javascript. I'm trying to run before I can walk. In the meanwhile, where do I place that JS code so it works? I've tried copying it directly in <SCRIPT> brackets in the HEAD and BODY sections and that doesn't work so I'm fairly certain I'm doing that wrong too.

Depressing Box
Jun 27, 2010

Half-price sideshow.

FuriousAngle posted:

That's great! It's exactly what I want it to do! And you're right, I definitely need to get more familiar with Javascript. I'm trying to run before I can walk. In the meanwhile, where do I place that JS code so it works? I've tried copying it directly in <SCRIPT> brackets in the HEAD and BODY sections and that doesn't work so I'm fairly certain I'm doing that wrong too.

You need to include jQuery first, and I recommend putting both at the very bottom of the page, just before the closing </body> tag, like so. Loading scripts last keeps them from slowing down the initial page load, and makes it so you don't (or very rarely) need to wait for the window.onload event.

FuriousAngle
May 14, 2006

See your face upon the clean water. How dirty! Come! Wash your face!

Depressing Box posted:

You need to include jQuery first, and I recommend putting both at the very bottom of the page, just before the closing </body> tag, like so. Loading scripts last keeps them from slowing down the initial page load, and makes it so you don't (or very rarely) need to wait for the window.onload event.

You are an amazing person. You deserve a raise and a back-rub. Thank you!

fuf
Sep 12, 2004

haha
I've asked this before but any suggestions for transactional email providers? It's for a server that sends ~1000 emails a month, mostly "new user", "here's your password", "contact form submission", etc.

My dilemma:

Mandrill - needs a paid Mailchimp account

Mailgun - no throttling / IP whitelisting (as I learnt to my dismay after it happily let through 20k spam emails in a couple of hours last week)

Sendgrid - no logs, so no way to see which sites are sending emails (I don't need to see the whole message, but want at least the sender, recipient and subject line so I can keep an eye on things)

I'll just go with Mandrill if there are no other alternatives.

DarkLotus
Sep 30, 2001

Lithium Hosting
Personal, Reseller & VPS Hosting
30-day no risk Free Trial &
90-days Money Back Guarantee!

fuf posted:

I've asked this before but any suggestions for transactional email providers? It's for a server that sends ~1000 emails a month, mostly "new user", "here's your password", "contact form submission", etc.

My dilemma:

Mandrill - needs a paid Mailchimp account

Mailgun - no throttling / IP whitelisting (as I learnt to my dismay after it happily let through 20k spam emails in a couple of hours last week)

Sendgrid - no logs, so no way to see which sites are sending emails (I don't need to see the whole message, but want at least the sender, recipient and subject line so I can keep an eye on things)

I'll just go with Mandrill if there are no other alternatives.

I use AWS - SES for all emails. Integrate with SNS and SQS to handle bounces and failed deliveries.

fletcher
Jun 27, 2003

ken park is my favorite movie

Cybernetic Crumb

DarkLotus posted:

I use AWS - SES for all emails. Integrate with SNS and SQS to handle bounces and failed deliveries.

Seconding SES. It's perfect for when all you wanna do is send email. I don't want or need any of the features that the other providers offer. I setup a postfix relay for it so everything on the box can just send to localhost:25 (usually the default config) and it will get sent via SES. So cron emails, jenkins, java webapp, etc all just works.

Rubellavator
Aug 16, 2007

So I'm trying to fix a CSRF vulnerability in an application I'm working on, but I'm pretty new to web security stuff in general and thought I'd bounce it off the thread.

The front end uses AngularJS and the backend is made up of REST services written in Java. I've seen a few different ways of providing protection but I'm going with the method supported by AngularJS so I don't have to implement the client-side half of the equation myself. Basically I provide a token in a cookie labeled on the first GET and Angular sends that token on all subsequent requests in a custom header for me to validate.

Most of the ways I've seen recommended to implement the server-side portion involve storing the token in the session and matching the header token with the token stored in the session. Since the application currently doesn't make use of session, I'm currently storing the token in a guava LoadingCache, which I'm using because it will handle expiration of the token for me. It works just fine as far as I can tell, but I'm wondering if there's some degree of security removed because the tokens aren't strictly tied to a user. The only thing I've been able to think of is that if two (or more) users were compromised that the attacker would be able to use either token. But I think I'd be able to prevent that too if I also checked if the cookie and header tokens matched in addition to checking if the header token was in the cache.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

argondamn posted:

So I'm trying to fix a CSRF vulnerability in an application I'm working on, but I'm pretty new to web security stuff in general and thought I'd bounce it off the thread.

The front end uses AngularJS and the backend is made up of REST services written in Java. I've seen a few different ways of providing protection but I'm going with the method supported by AngularJS so I don't have to implement the client-side half of the equation myself. Basically I provide a token in a cookie labeled on the first GET and Angular sends that token on all subsequent requests in a custom header for me to validate.

Most of the ways I've seen recommended to implement the server-side portion involve storing the token in the session and matching the header token with the token stored in the session. Since the application currently doesn't make use of session, I'm currently storing the token in a guava LoadingCache, which I'm using because it will handle expiration of the token for me. It works just fine as far as I can tell, but I'm wondering if there's some degree of security removed because the tokens aren't strictly tied to a user. The only thing I've been able to think of is that if two (or more) users were compromised that the attacker would be able to use either token. But I think I'd be able to prevent that too if I also checked if the cookie and header tokens matched in addition to checking if the header token was in the cache.

If the tokens are not mapped to an individual user, how do you authenticate what each user is doing?

Impotence
Nov 8, 2010
Lipstick Apathy

fuf posted:

I've asked this before but any suggestions for transactional email providers? It's for a server that sends ~1000 emails a month, mostly "new user", "here's your password", "contact form submission", etc.

My dilemma:

Mandrill - needs a paid Mailchimp account

Mailgun - no throttling / IP whitelisting (as I learnt to my dismay after it happily let through 20k spam emails in a couple of hours last week)

Sendgrid - no logs, so no way to see which sites are sending emails (I don't need to see the whole message, but want at least the sender, recipient and subject line so I can keep an eye on things)

I'll just go with Mandrill if there are no other alternatives.


Explain more about mailgun? What is wrong with that?

Rubellavator
Aug 16, 2007

Skandranon posted:

If the tokens are not mapped to an individual user, how do you authenticate what each user is doing?

I'm not too keen on the details, but we are making use of jaas. I don't have to worry about authentication.

fuf
Sep 12, 2004

haha

Biowarfare posted:

Explain more about mailgun? What is wrong with that?

I'm just super paranoid about the lovely wordpress sites I host getting hacked and sending out spam. Spam from client domains = their domain reputation gets damaged = their legit emails end up in spam folders.

Mandrill has a thing where if you usually only send a few emails per hour and then suddenly you start trying to send thousands, it will queue them up and give you a chance to delete them. I know that stuff should be handled directly on the server, but it's just an extra little layer of reassurance.

One of my sites got hacked last week, and Mailgun just let all the spam through without a second thought.

I actually emailed Mailgun a few months back to ask about implementing sending limits for spam protection, and they were like "yes this is a great idea, we'll get on it asap!"

Then I emailed them again after all the spam (not to complain really, just to let them know) and they deleted the ticket lol :(

I might go with SES, thanks for that. They don't log sent emails though unfortunately. https://postmarkapp.com/ looks promising too.

nexus6
Sep 2, 2011

If only you could see what I've seen with your eyes

fuf posted:

I might go with SES, thanks for that. They don't log sent emails though unfortunately.

Really? We use SES on one of our projects and we have a log of each email sent.

DarkLotus
Sep 30, 2001

Lithium Hosting
Personal, Reseller & VPS Hosting
30-day no risk Free Trial &
90-days Money Back Guarantee!

nexus6 posted:

Really? We use SES on one of our projects and we have a log of each email sent.

You may have your own internal log, but SES itself does not provide any kind of a functional log of emails sent.
It counts them sure, but doesn't list times and recipients with subjects or anything like Mandrill does.

For those that need logging...

If you're using postfix to dump messages to AWS, just monitor the postfix logs, it's not that hard to identify spam.
You can also force authentication so only authenticated sources can send mail through postfix to SES.

If you're running any kind of a web hosting server and host wordpress, it will eventually be compromised. I suggest you use something like mailchannels, they identify and stop spam and alert you to it so you can fix it.
It's what Lithium uses on all shared hosting servers and we even sell low volume mailchannels plans if you want to try it out.

fuf
Sep 12, 2004

haha

DarkLotus posted:

If you're running any kind of a web hosting server and host wordpress, it will eventually be compromised. I suggest you use something like mailchannels, they identify and stop spam and alert you to it so you can fix it.
It's what Lithium uses on all shared hosting servers and we even sell low volume mailchannels plans if you want to try it out.

Oh hell yeah, that sounds like exactly what I need. Man I've been googling this poo poo all day but that never showed up.

Ok new plan:

Rely on server for logs / auditing
Get a $10 mailchannels account from DarkLotus
Profit

DarkLotus
Sep 30, 2001

Lithium Hosting
Personal, Reseller & VPS Hosting
30-day no risk Free Trial &
90-days Money Back Guarantee!

fuf posted:

Oh hell yeah, that sounds like exactly what I need. Man I've been googling this poo poo all day but that never showed up.

Ok new plan:

Rely on server for logs / auditing
Get a $10 mailchannels account from DarkLotus
Profit

Lithium Hosting is a MailChannels partner / reseller and they have referred people to us for low volume plans. Cost per message is cheaper than what they offer on their lowest tier.
I don't normally advertise like this, but it is a solution to a problem at a good price. Shop around though, make the decision that works for your needs / company / website.

fuf
Sep 12, 2004

haha
man that was barely advertising, that was just genuinely helpful. I think you've earned enough goodwill in these threads over the years that no one minds :)

nexus6
Sep 2, 2011

If only you could see what I've seen with your eyes

DarkLotus posted:

You may have your own internal log, but SES itself does not provide any kind of a functional log of emails sent.
It counts them sure, but doesn't list times and recipients with subjects or anything like Mandrill does.

We use SNS to get SES notifications sent to our server for deliveries, bounces, e.t.c

Our log includes the headers, message and SMTP respones for each message sent by SES.

Scaramouche
Mar 26, 2001

SPACE FACE! SPACE FACE!

SES is surprisingly good, for once an Amazon product does what it says mostly on the tin. It's a Simple Email Service. I've think I've converted 5 or 6 shops to it in the last couple years.

Impotence
Nov 8, 2010
Lipstick Apathy

DarkLotus posted:

Lithium Hosting is a MailChannels partner / reseller and they have referred people to us for low volume plans. Cost per message is cheaper than what they offer on their lowest tier.
I don't normally advertise like this, but it is a solution to a problem at a good price. Shop around though, make the decision that works for your needs / company / website.

Any chance you could offer a smaller account (<500 emails/m)? Could pay in bitcoin to not be hit with transaction fees if needed? Or does mailchannels not like that

Cugel the Clever
Apr 5, 2009
I LOVE AMERICA AND CAPITALISM DESPITE BEING POOR AS FUCK. I WILL NEVER RETIRE BUT HERE'S ANOTHER 200$ FOR UKRAINE, SLAVA
Our designer handed us something I did not realize would be a problem until I got down to actually trying to make it work. The page masthead should be able to have an image on the right that is cut at a 30° angle and extends past the masthead into the nav. Mockup:

I've been unable to figure out how to achieve this—first tried a skewed wrapper with overflow hidden and the image counter-skewed, but the clipping didn't come out right and there was no way to allow the client to specify what area of the image they want to appear in the unclipped portion. Worse, the masthead should theoretically expand as they overfill the intro text, revealing more of the image and the image comes to a point with another angle back toward the right-hand side.

Has anyone got experience doing something like this before? Any insights to offer?

chami
Mar 28, 2011

Keep it classy, boys~
Fun Shoe
SVG paths and masking might help.

Adbot
ADBOT LOVES YOU

DarkLotus
Sep 30, 2001

Lithium Hosting
Personal, Reseller & VPS Hosting
30-day no risk Free Trial &
90-days Money Back Guarantee!

Biowarfare posted:

Any chance you could offer a smaller account (<500 emails/m)? Could pay in bitcoin to not be hit with transaction fees if needed? Or does mailchannels not like that

We pay a per user account fee plus per message fees, so the plans are priced out to be affordable and profitable at the same time.
I don't think you'll find better than our MC Starter plan, $10/mo isn't bad for what you get compared to buying from MailChannels directly.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply